Thank you for watching! You can use whatever model you like but here the airplane I used: sketchfab.com/3d-models/air-force-one-a3512cd0cf5e4e18b1d6d2f9ea9dcffa Here's the script I use in the video: import bpy import mathutils # Get selected objects selected_objects = bpy.context.selected_objects # Get objects in "sim" collection sim_collection = bpy.data.collections.get("sim") if sim_collection is not None: sim_objects = [obj for obj in sim_collection.objects if obj not in selected_objects] else: sim_objects = [] # Record original world transform for each selected object original_transforms = {} for obj in selected_objects: original_transforms[obj] = obj.matrix_world.copy() # Loop through selected objects for obj in selected_objects: # Find closest non-selected object in "sim" collection closest_obj = None closest_distance = float('inf') for sim_obj in sim_objects: distance = (sim_obj.location - obj.location).length if distance < closest_distance: closest_obj = sim_obj closest_distance = distance # Parent selected object to closest non-selected object using keep_transform parenting if closest_obj is not None: obj.parent = closest_obj obj.parent_type = 'OBJECT' obj.matrix_parent_inverse = closest_obj.matrix_world.inverted() * obj.matrix_world # Restore original world transform for selected object obj.matrix_world = original_transforms[obj]
@@Nivaroniko I know this is late but if you try applying scale and rotation on your high detail parts before running the script that fixed the same issue for me
I was having an issue when I tried to animate the plane. I could move the plane, but whenever the low-detail plane "chunk" was switched from (dynamic, animated) to just (dynamic), the plane would completely shatter without any kind of break threshold applied. If you're having this issue (and for my own future reference because I'll definitely be returning to this video), the fix is incredibly simple: when FxForge parents the low-detail plane chunks to the empty at 12:52, make sure you also parent the low-detail plane chunk CONSTRAINTS as well (with the same "keep transform" option that you used on the chunks). Now when you move the empty, both the plane chunks and the chunk constraints move with the empty. I wonder if this was in the video at some point but simply got cut out by mistake. EDIT: of course only after writing this did I realize this exact problem was answered by FxForge farther down in the comments. Whoops! Also for my own future reference and anyone who's interested, a break threshold of 50 felt pretty good. You can also keyframe the threshold value. So maybe at the start of the crash, it has a high breaking threshold, then after it bounces along the ground for a bit, you lower it to something like 20. Also make sure to switch the threshold-switch keyframe's interpolation to "constant". This will instantly make it switch from 50 break-threshold to 20 break-threshold on the desired frame. To apply a threshold keyframe, select the constraints, set the new threshold value, press 'i' while hovering over the threshold input box, then in the 3d viewport press ctrl + L and select "Link animation data". For some reason I had to do this every time I wanted to change the threshold value. You could also select specific parts of the plane by group selecting some constraints, and setting their threshold value so it's different from the rest of the plane. So maybe the body doesn't shatter apart as easily as the wings might, etc.
Hey man, i love your work!. You have done it again and impressed us all with an amazing tutorial. Thank you so much for this great tutorial and i will be sure to take a look at your other videos. Thanks man!
Is there a project file avail with this already setup? Or is that what the script is? Im new to Blender and trying to do a vfx shot like this. Also where is the previous video you mention about fixing cell fracture from going crazy, that's where i am stuck now
I've tried to recreate real plane crash, so at first i made a rigidbody, baked simulation and then started to shatter plane's hull. Honestly, it was a mistake to do things in this order, cuz autoparent script has a lot of bugs. Several notes about how to work with it: 1. Before using it u must apply rotation and scale and also clear all parents 2. When u create a scene in 1:1 scale this script may cause some glitches, so it would be better to work with 1:10 scale 3. The further your objects from the world origin point, the more location glitches appears when using this script, so it would be better to start your animation at 0-0-0 location, otherwise u will encounter a lot of bugs
Hi. When i do the constraints step, i got rigid body but they have a "constraints" name (so theyr only active/passive) and not like yours, rigid body constrains wich allows you to tick breakable. Any idea?
HI BRO i canot understand the animate part i mean how to do that when i apply dynamic and animation it do nothing how i move forward after resolving that issue
Great Tutorial! How long did it take to remesh this plane? Because I tried it and couldn't do it, it was like almost 400 GB of memory in counting. I'm running a M1 Max MBP!
dude, I don't know what could be, maybe I missed something important in your tutorial, but when my plane touches the ground, it disintegrates completely. I wanted to keep some parts intact, like it was in yours. Can you help me?
Oh yes! I totally forgot to mention that in the video! You'll have to parent the constraints to the empty aswell, so that they follow with the pieces. I should probably upload a new version when I point that out... Thank you for picking up on that!!!
@@AlbinThorburn Thanks bro, I'll wait for your next video then, why don't you create a group on telegram or a channel on discord? I think it'd be really cool for your followers and the community, just think about it
Hey I don’t know if you can help but when I run the script at 9:38 I get an error saying (. Python Traceback (most recent call last): File “/Text”, line 2 in NameError: name ‘bpy’ is not defined ) if you could help that would be much appreciated
Hi, i fixed the problem that you are having with the coding. You gotta add this code ''import bpy'' to the first line . After pasting this everything will work like as usual then.
at 8:17, whenever i use press p to separate by loose parts, it separates parts like the engines, but not parts of the plane body. do you know whats going on
Hmmm... Sounds like your explode modifier didn't apply correctly! You can play it forward a couple of frames, then apply it an make sure that the mesh is covered in "cracks" where the pieces got sepparated- hope this helps!
@@AlbinThorburn Thanks! it worked! the problem was when I applied the modifier on frame 0, when the simulation hadn't started, so nothing happened. Thanks!
Hmmmm.... Maybe try applying all transform values then setting origin to center of mass for those pieces? Let me know how if it works out or not hahaha
@@AlbinThorburn its worked bro, thankss, i apply all transforms in ctrl a menu, and i set the origin center of mass again, believe in the process hahahaha
ok so i was having errors with code so i asked gtp to fix it and it gave me this output import bpy import mathutils # Get selected objects selected_objects = bpy.context.selected_objects # Get objects in "sim" collection sim_collection = bpy.data.collections.get("sim") if sim_collection is not None: sim_objects = [obj for obj in sim_collection.objects if obj not in selected_objects] else: sim_objects = [] # Record original world transform for each selected object original_transforms = {} for obj in selected_objects: original_transforms[obj] = obj.matrix_world.copy() # Loop through selected objects for obj in selected_objects: # Find closest non-selected object in "sim" collection closest_obj = None closest_distance = float('inf') for sim_obj in sim_objects: distance = (sim_obj.location - obj.location).length if distance < closest_distance: closest_obj = sim_obj closest_distance = distance # Parent selected object to closest non-selected object using keep_transform parenting if closest_obj is not None: obj.parent = closest_obj obj.parent_type = 'OBJECT' obj.matrix_parent_inverse = closest_obj.matrix_world.inverted() @ obj.matrix_world # Restore original world transform for selected objects for obj in selected_objects: obj.matrix_world = original_transforms[obj] and it worked
I want to see real plane crash but this is a VFX breakdown method ha wow what a surprise.but nice plane crash video anyway how did you do a VFX video plane crash 🤖 🛬🛬