Destruction

this week Mehdi teach us how to destruct objects. he use the simple object like sphere or box to introduce what is scatter, Voronoi.

Image result for Voronoi
Voroni pattern

This box has been scattering on the surface.

Adding node Voronoi fracture can see the Voronoi pattern showing on the box.

connect exploded node to Voronoi fracture can see how the fracture will be like. the Uniform Scale attribute in the exploded view is to put the distance to every piece.

the fracture sphere using the same setting node as a box will look a bit wired, cause every piece will point to the sphere’s center because the Voronoi fracture is base on the scatter points on the sphere’s surface.

To fix this is to add a node called points from volume.

there are nearly 4000 points on the sphere, to reduce the points is to adjust the point separation.

connect volume fracture will get a result like this. I adjust the jitter scale in points from volume, to let the pieces looked randomly.

to merge scatter and points from volume together, will get a more better result.

adding node called VDB from polygons, will see an image like this. VDB allows true vectors at each voxel.

voxel main the 3d object’s pixel. In 3D computer graphics, a voxel represents a value on a regular grid in three-dimensional space.

Image result for voxel
voxel

the distance VDB is on the object surface, if toggle density you will see like this.

connect the volume to scatter, we will get the points shows up, it scatter inside the volume of this sphere.

Using VDB points polygons will give me more controller the points from volume. you can just the force total count directly.

it is how it connects to a box look like.

in order to add more details to the box, using remesh node, and type * to the hard edges group to keep all the edges are keep where they are.

Adding attribute noise to the pieces is to adjust the amplitude and element size. help you to reach the result you want.

in the next set is to add a node called rest, This node creates an attribute that causes material textures to stick to surfaces deformed using other operations.

and we need to add an attribute wrangle node under the Voronoi fracture. and type v@P=v@rest in it.

and adding a normal node between rest and attribute noise. to correct the normal.

the attribute noise node is to help us get natural broken edges. without attribute noise, the broken edge will look straight.

the second way to do the Voronoi fracture is like this. add a scatter node and a grid node. you will get the gird straight look like this, to randomize the gird orientation is to add the attribute randomize node.

the attribute will set like this. the attribute name is normal and the distribution is direction or orientation.

and then let the grid size become bigger, set the size to 20/20.

adding boolean facture node and exploded view node, and connect them together. and you will get a result like this.

to lower the incision is to adjust the attribute of scatter’s force total count.

To let the result be more natural is to add attribute noise between grid and copy to points.

and add more rows and columns on the grid.

add divided between attribute noise and copy to points. to organize the polygons.

the final looke of second way to destruction the box.

Destruction object like its own material

Mehdi teaches us a hack to destruct a pillar.

add VDB from polygons node to the pillar. and tick fog VDB block.

add scatter to lower the force total count. and then adding Voronoi fracture node and exploded view node you will see the pillar look like this, but it is not like a wooden pillar.

add a transform node between normal and VDB from points node.

right-click create the reference copy. and delete the invert transformation channel. now I can tick the box and the change only appear on the duplicate transform node.

to adjust the scatter force total count and transform 1 y-axis scale to get the closest result you want.

Side FX material fracture node

the RBD material fracture has different material type allow you to choose. and the fracture level, scatter points… will influence your final result.

it uses the same principle we use to Voronoi the object before, the VDB from polygons.

for now, keep all iteration noise types to none.

and the box will become more uniform.

in the detail, there is a box can tick to add edge detail, it will add noise on the cutting edge.

In the wireframe mode, you can saw it clearly noise only inside.

to adjust the noise height and noise element size to adjust the noise and lower the detail size is to make the details scale larger.

you can also adjust the interior details.

just activate the interior detail box. to adjust the frequency lower is to let the details bigger.

then activate the second and third level and their fog volume, noise type you will get the destruction like this.

Simulation

to get the Voronoi result, Houdini gives every piece a name. it can be seen in the piece prefix icon on the right.

and then we going to use a sphere to do the simulation.

the sphere set up will be like this.

create a DOP network and a null.

inside the DOP network and create a solver node, solver is where the physics happens.

the rigid body solver can change into the bullet or RBD directly.

but we will create a bullet solver directly.

create the RBD object mode and connect it to the bullet rbd solver, select our SOP path to our out rbd object.(the null we named before)

add the gravity and you will see the ball coming down. and then create a ground and a merge.

the default setting is left affect right, so our connection will be like this.

and then connect the merge to the out put.

The results will be like this. you can adjust the bouncing time in the RBD object. it is in the physical-bounce, set it to 1 you will get several bounces. the ground plane can also adjust the ball bounce, it will influence each other.

the friction in the physic just like resistance. if you delete the friction in both ground and object, the object will have no resistance.

we going to add a movement to the box, create a box that falls down to the ground and broke into pieces view, connect the box to the null(out rbd object) translate a movement to it.

the collision will not happen, because the collision geometry just a big cube, so it won’t break into pieces when the box hits the ground.

to solve this problem, we need to create a node assemble to pack the object.

and then get to the DOPnetwork. we can’t use the outRBDobject anymore, cause this node only use for a single object.

I create a node RBD packed object, it is used for the packed object.

go inside the attribute panel and then click the SOP path to find the right node. it is the null RBD packed object.

and we will see when the box hits the ground, it will turn into pieces.

we can see inside the RBD packed object, under the bullet data, there is a geometry representative, the default setting is the convex hull. bullet solver is better on the convex not the concave.

convex and concave

convex is the original box, but if you delete the box surface and extrude it will become the concave object.

Proxy geometry

when we connect our bullet solver mode to the fracture box with details on it, we will find the pieces have some problem with it. proxy geometry is to solve this problem. create a null under the RBD material fracture, and connect to the exploded view node.

change the null name into out rbd object for proxy, and then goto DOP network, RBD packed object node, select SOP path to this.

remember to connect transform before the out RBD object for proxy, let the box upper from the ground. and the assemble as well. the fracture simulation will take less time than before.

another thing is to connect the DOP import node under the DOP network node. drag and drop the DOP network to the DOP import, DOP net work box. and then set the import style to fetch geometry from DOP net work.

the Object mask box has a ‘*’ in it, the ‘*’ means to bring all the object import, to bring specify we wnt, can type down its name and then add ‘*’ behind it. we don’t want to show the ground so, I type rbd*, and the name without RBD words will disappear.

the details on the fracture of the box disappear, is because the proxy node, to the details back, first is to set the import style in to create points to represent object.

to apply the high geometry to the DOP import node is to add a node called, transform pieces. and connect it with the high geometry and DOP import.

the condition for them to work is because the name attribute from DOP import math with the high geometry name attribute.

it is the optimal way to do the stimulation.

concrete cabin stimulation

the first thing before the destruction stimulation is that we need to fix the bad geometry.

it will make the solver easy to stimulate.

create the node rbd material fracture connect to the merge, and then add some edge details, and adjust the detail size bigger.

check with “w” to see how big the pieces are.

set the Fog volume, volume resolution to 100, and adjust the noise frequency, remember the mode to on the mouse up.

use exploded view to check how the wood cabin will look like. the pieces are not enough so we tend to add more pieces, we can adjust the scatter points from 5 to 10, and we get more broken concrete house.

and add one more level to the fracture


we will see the result is much more closer to we want.

and then add a node RBD bullet solver, it’s different from the bullet solver, need to be create under sop network. but RBD bullet solver contain SOP net work and bullet solver. and then connect them together.

add a ground under the house, and press play we will see the house broke like this.

and then connct the constraint geometry. create a sphere as the object to happened collision with the house.

set the sphere to polygon, and arlt click set a key frame about the sphere’s position on the time line. and move it on the z axis set a keyframe on 40.

and connect the sphere to the collision geometry. and go to collision panel set the initial object type to create deforming static objects.

it will moving all of the wood cabin. if we want a part of the wood cabin move, not all of them, need to set up in the RBD material fracture.create to assemble on the geometry and proxy geometry line,

and then use the proxy geometry assemble to select the part you don’t want to move. then create a group node for what you select. then create a node assemble.

name the arittibute to active, this is really important.

create one mor attribute create and set the group unactive. and set the value to 0 the cabin will not moving.

and then turn on the RBD material fracture’s switch to soft constraint when broke, it means the part get hit will influence it’s nearby parts.

go to the RBD bullet solver, constrainrs, breaking thresholds panel. set the distance threshold to 0.05.

when I add one more fracture level I noticed some pieces on the house didn’t break.

to fix this problem you will need to go to the group node, and then enable bounding box.

and then use the handle to set up the part you don’t want.

and then go to the RBD material fracture detail panel, adjust the number of the primary strength, this number is too big needs to be lower. set it from 10000 to 100

now the cabin broken pieces look more realistic.

wood cabin simulation

the first thing to do the wood cabin stimulation is to separate the cabin into the different part and group them together,

like the roof and door and walls.


after grouping different parts, create a null node as a merged layer, and then create an object merge node, drag and drop the null to the object 1 box.

then create a few blasts to separate them properly. then we can start to do the destruction. Mehdi taught us to use Voronoi fracture instead of RBD material fracture because the simulation will become really slow. create three nodes, the Voronoi fracture, scatter, and VDB from polygons.

switch to density set the voxel size smaller.

connect the node to scatter and turn off the relax iterations. and connect both of them to Voronoi fracture. but this not look like wood, Mehdi taught us a quick hack to make fracture like wood.

add a node call transform between them, set the y-axis to 8.

then copy the transform node, right-click and create reference copy. and tick the box inverts the transfrom

create one more scatters to add up the force total count. then merge all the parts of the house together and hit play, you will see the house broke like this.

I have three question on my wood cabin destruction

the first one is why my wood cabin’s door is in blue?

what are the white lines on the geometry for?

How to fix the come-out wood pieces?

I book one to one with Mehdi, he taught me how to fix these questions.

to fix the first question is to add a reverse node to fix the doors’ normals. after fixing the wrong normals, the doors will become normal color.

the white line on the house is because of the glue. it connects every piece from point to point.

the last question is to add a divided node under my wood wall. it helps me to clean up polygons: fix concave polygons, divide N-side polygons into triangles or quads with optional bickered layout, triangulate non-planar polygons.

this is how my final wood cabin destruction looks like.