[Houdini] Week3 – Cracked house

Introduction

According to Mehdi, this week is a more complicated but interesting course. Because last week’s assignment was difficult, I was worried about whether it would take a long time to complete this week’s assignment.

Tips:

4. Make sure that the order of the nodes is correct!

5. The replicated node must remember to modify the data.

6. Be good at using Group’s bounding box to select a group.

Problems:

4. Entering vex in the attribute wrangle has no effect.

5. It is not understood why the cracking effect of wood can be achieved.

6. The final rendering effect was not made.

Process

At the beginning, the teacher explained what was not explained in the last class. But my particles did not appear this situation, I also tried to adjust the Inherit Velocity to see what changes, this is to make particles are created without velocity, without initial velocity. But there is really no change in my model.

Mehdi said Reset Simulation can recalculate everything. Substeps control the number of operations each time, the more particles the more obvious the effect.

Now we go back to the wooden hut built in the first week and add a new node: Primitive. This node can edit primitive, primitive attributes, and profile curves. Unlike Transform, its pivot is on the surface itself, not in the world, so it can modify the position of the pivot. According to my practice, I found that on Scale Y, Y can be deformed if only transform, because it is based on the entire model. But it is not possible with Primitive.

I’m taking notes while listening. We need to modify the node tree so that the final output has four groups, namely wall, roof, window, and floor.

Voronoi is sort of the closest thing we found to use to do a bit sort of natural or shapes of destruction.

https://en.wikipedia.org/wiki/Voronoi_diagram

Before explaining how people break down the house, the teacher first uses a simple model to explain the knowledge points. Following the teacher, I made this simple effect, and some new nodes appeared in it.

Voronoifracture: Fractures the input geometry by performing a Voronoi decomposition of space around the input cell points.

Explodedview: Pushes geometry out from the center to create an exploded view.

Pointsfromvolume: Creates set of regular points filling a volume.

Normal: Computes surface normal attribute.

This time the teacher talked about two formats for three-dimensional objects.

Volume is the nature of Houdini format of volumes which we do not use very much.

VDB is a general format is widely used by all software and render.

Isooffset: Builds an offset surface from geometry. It will create volumes. We can save information in all the voxels.

Remesh: Recreates the shape of the input surface using “high-quality” (nearly equilateral) triangles.12

Voxel: all the voxels that have zero as a value up until a certain threshold, they are going to be deactivated individually before a certain threshold, all the voxels that have zero as a value up until a certain threshold, they are going to be deactivated individually. And that is sort of safe memory and performance, so this is what we call a sparse volume.

We create a fragment by dividing points from the volume, and the effect is better than before.

We can store the location of the attribute in two ways.

Restposition: This node creates an attribute which causes material textures to stick to surfaces deformed using other operations.

Rest can get the rest position in one of two ways:

3. By reading a file.

4. By attaching a second input.

Or enter vex in the attribute wrangle: v@rest = v@P; but I don’t know why. After I created the node, the model did not change. Maybe I did something wrong, but I saw in the geometry spreadsheet that I have created it. It succeeded, which is strange. 14

Mehdi also talked about other knowledge, such as letting the rupture not be completely scattered, but like being cut by a knife.

Add Attribrandomize: Generates random attribute values ​​of various distributions.

Add booleanfracture: Fractures the input geometry using cutting surfaces.

It looks good!

Mehdi hopes that we can make the broken wood, a different effect from concrete. I followed his steps again, and the result was a cool effect, but it was not what I wanted.

I had to watch the video again. I found that I got the position of the first transform wrong, so the effect of the scatter was not affected by the transform. Secondly, I did not disconnect the invert transformation of the second transform. Although I don’t know what this is, the output does feel like wood after changing the scale Y 0.1.

This looks pretty good.

The teacher also taught us a new node, only need to adjust this node to achieve the desired texture breaking effect!

Rbdmaterialfracture: Fractures the input geometry based on a material type.

Now the teacher is going to talk about dopnet. At this time, don’t forget to create null first, but also to change the name, keep a good habit.

We enter dopnet and we can see that there is only one output, so we need to add nodes:

Bulletrbdsolver: Sets and configures an Bullet Dynamics solver. This is a node that Houdini is now more commonly used in production, and it is becoming more and more powerful as Houdini is updated.

Rigidbodysolver: Sets and configures a Rigid Body Dynamics solver. This can switch bullet and rbd.

rbdsolver: Sets and configures a Rigid Body Dynamics solver. This is also more commonly used, but it is older.

Rbdobject: Creates an RBD Object from SOP Geometry. The logo of this little duck is too cute.

Groundplane: Creates a ground plane suitable for RBD or cloth simulations.

Here I can modify bounce, friction, and force to make the ball have physical properties, just like unity, which is very convenient. 2526

But there is a problem. My model with cracked special effects cannot be used. This is because rbdobject is not suitable for this. First we need to add assemble or pack to the obj network. This is for easy reading of keep name.

Assemble: Cleans up a series of break operations and creates the resulting pieces.

In this case, we can uncheck create Name Attribute and connect Inside Edges. Although I don’t know why.

Enter dopnet and add rbdpackedobject: Creates a single DOP object from SOP Geometry that represents a number of RBD Objects. But no matter how I play it, the object does not fall off, I have to check what I did wrong. I modified it a second time and replaced assemble with pack. Now the model can fall, but it will not be broken up. I had to continue to use assemble, and after watching the Mehdi operation again, I found out that I forgot to check Create Packed Geometry.

This effect is so cool!

Then Mehdi mentioned the new node:

Convexdecomposition: Decomposes the input geometry into approximate convex segments. Decomposes the input geometry into approximate convex segments.

Convexhull: Computes the convex hull of the input geometry and moves its polygons inwards along their normals. Computes the convex hull of the input geometry and moves its polygons inwards along their normals.

This is like a node about modeling, and I don’t know how to use it for the time being.

Next, Mehdi said, because the dop at work will be relatively large, we cannot play it directly, so we can use proxy. But I got the order of the nodes wrong again, so I spent a lot of time to check why it could not be played.

If you want to share dopnet with your partner, you can import it with the dopimport node. If it is not displayed, change the Import Style.

Transformpieces: Transforms input geometry according to transformation attributes on template geometry.

Rbdinteriordetail: Creates additional detail on the interior surfaces of fractured geometry. It is to display Rbdmaterialfracture again, which can be optimized for use with proxy.

Polyreduce: Reduces the number of polygons in a model while retaining its shape. This node preserves features, attributes, textures, and quads during reduction. This is used to reduce polygons, but we must pay attention to unique (piece), we must maintain the number Consistent, rather than being subtracted because it is too small.

Now finally comes the constraint that Yu and I said in advance!

But the trouble is, I have been unable to achieve the effect the teacher wants, so I can only make an appointment for Mehdi’s 1 to 1 tutorial.

[Update] I solved it by myself! ! ! Mehdi said later: If your constraint’s strength value is too high, then there will be no breakage. I used him to adjust the value to 1, but it didn’t work. So I changed it to 0.1, which actually worked!

Finally I am going to create a fragment for my house! First of all, I created rbdmaterialfracture and explededview first, and adjusted some parameters to make the house broken. Secondly, even in Geo, I can create rbdulletsolver. Although there are many lowlevels after this node, Mehdi will explain them to us one by one.

Since I need to create a fracture, of course I need the ground. Just in rbdulletsolver can create a Ground Plane.

Looking at it this way, the house has the ground as a support, and it breaks in place, and the effect is not bad.

What if we give it a collision? Create a small ball and connect to the fourth input of rbdulletsolver. Next, you must choose create deforming static obejects in Collisions, so that the sphere will move and destroy the house. If you keep the default create animated static obejects in Geo, a mode for obj network, in order to save memory, it will not respond.

I used assemble again in geometry and proxy. But there seems to be no change in name.

In the previous collision, I found that the house where the ball hits will move with it. I hope the house can be broken but it will not move.

4. Create a group and change the primitive to point. Select half of the points/surfaces to create a group. Here I did not choose the right point at first, so something went wrong.

5. Then create attribcreate1 and change the Name to active. This is very important! Then change the Value to 1, indicating that this is activated.

6. Then create attribcreate2, the Name still remains active (I made a mistake here), and change the Value to 0, indicating that this is not activated.

In the constraints in rbdmaterialfracture, select Switch To Soft Constraint When Broken, which can produce some more realistic broken effects.

Even I can adjust the threshold. For example, adjusting the Distance Threshold, which can make the fragments smaller.

But the realtime speed will still be slower. How to optimize it? There are some methods. For example, if you don’t want to display geometry, you can uncheck the visualize of rbdbulletsolver. Or export only the simulated points, which is much faster than just exporting each geo.

Filecache: Writes and reads geometry sequences to disk.

[210301 update]我去问了mehdi关于transformpieces节点的问题。实际上,filecache可以储存点信息,然后我可以再创建一个filecache储存geometry的信息,发给我的工作伙伴。然后他用transformpieces可以把这两个文件连接起来,这样就不需要重新模拟数据了,可以加快工作速度。这里的transform指的不是变化,而是包括translate,scale,rotate在内的信息。感觉有点类似于merge的效果。

Now I need to go to another node of the copied house to perform a new operation.

object_merge: Merges geometry from multiple sources and allows you to define the manner in which they are grouped together and transformed. Merges geometry from multiple sources and allows you to define the way they are combined and transformed. If you can’t find the source of the object you want, just drag it over.

Create multiple blasts and import the previously divided groups into them.

Then we add different material fragments to different parts of the house.

It is worth mentioning that windows, because the glass breaking effect created directly with the glass of rbdmaterialfracture is integrated. We want each glass to have a broken effect separately in addition to the grouping blast, and the following nodes can also be used:

For each connected pieces: Create the following three nodes↓

Connectivity: Creates an attribute with a unique value for each set of connected primitives or points.

foreach_begin: The start of a looping block.

foreach_end: The end/output of a looping block.

Because the exported pieces prefix names are the same, this may cause problems, so you have to change the names.

Copy the node that was done before, but an error will be reported, so we add a new node. I do not know why either.

Rbdconstraintproperties: Creates attributes describing rigid body constraints.

This is the final node tree.

But why is the model not destroyed when there is a broken effect?

[210224 update] Mehdi helped me solve the problem in class! I really can’t think of the problem with the group, because I copied it and did not change the group selection, and the number of faces was completely changed. The best way is to use a bounding box to limit the scope, no matter how the number of faces and points changes.

This is the final effect. It’s really cool!

Conclusion

This time I also thank Mehdi for helping me solve the problem, and I also thank myself for being patient to study my problem. This lesson is about Dop, which is also very important new knowledge. I finally made cool special effects, which made me feel very fulfilled.

This entry was posted in Advanced and Experimental 3D Computer Animation, Houdini & Lighting. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.