• Pizzaman
  • Asking for seconds
  • Email
  • Posts 134
  • Reputation 4
  • Member Since
  • Last Active
  • Location: Paris
  • Occupation: Lookdev on feature films
All Posts Topics Started Likes
Copier improvements


As a workaround, I usually output the arrays i want to store as meshes thanks to the point node (eg $TX=$CR, $TY=$WEIGHT, $TZ=$ID, etc.).
This way, you can store your arrays in alembic, version them, mix them... and even deform them !
And also, meshes are cross-plateform.

0 0
Shatter & peak interior faces of solid shatter

Hello Jeremy,

While trying to replicate what i wrote, i discovered the shatter node actually creates UVs for the thickness... don't know if it's a matter of version or if it's always been the case, but that changes the whole process. The method may work exclusively on thin wall objects now.
Maybe this is something Peter could implement : Output the list of the interior components. Or at least an option not to create UVs on interior faces.

Still, i attached a scene with a surface method (which works perfectly) and the volume method.
0 0
tension direction?

One possible solution (thanks for the challenge by the way !) :

- Compute the "stretching" vector (length and direction)
- Displace the mesh to the stretch direction, with points projected on the tangent/binormal plane
- Use the pointsOnMeshInfo to grab the UV values of the old mesh at the position of the new one
- Calculate the difference between the new UVs and the old ones, you get the direction in UV space :)
- Create a mesh in world space from UV space (mapToMesh)
- Calculate the angle between the X direction and the mesh vertices
- Export the directions and amount of stretch in the vertices... after a little blur to avoid the crap i can't understand.

Although the theory seems to work, the way Arnold deals with anisotropy makes it a nightmare to setup.

1 0
createArray node
Sorry... SOuP updates happen too frequently for my brain (and my workflow) to follow :)
0 0
shaders to copier node.
The same scene for Arnold...
0 0
createArray node

It would be really nice to have an "input.count" in the createArray node. You could just plug any array inside with a "type" attribute (float, vector, point) to make sure the output matches the input.
In the meantime, I usually use this graph to procedurally output the length :

->pointCloudToCurve.inArray, pointCloudToCurve.outCurve->
->curveShape.create, curveShape.spans->

- You can use a nurbsCircle shape to output the spans count.
- The plusMinus adds 1 to the input count (please don't ask me why)

Click image for larger version - Name: Selection_013.jpg, Views: 6, Size: 130.88 KB
0 0
tension direction?

With Arnold, you just have to enable the "exportVertexColors" option on the objectShape->ArnoldTab. Once done, you can create a aiUserDataVector node which will be able to read the values per point and use them as a texture in your shading graph : No need to bake to textures. You just need to fill the "Color Attr Name" slot of the node with the name of the colorSet containing the values.

Works like a charm with progressive rendering...

... but I think the hardest part awaits you there. You'll need to convert your vector direction to an angle rasterized in UV space to drive the angle attribute of your shader. Can't help you there, so good luck.

1 0
Scatter, rain setup & optimisation

Hello Peter, thanks for your answers.

I firstly tried what you explained but got stuck with the amount of points needed on the curve to achieve a rain effect. The group node takes forever to cycle through all the points generated. That's why I was looking for a way to only evaluate the points close to the camera, and dynamically.

I solved this first problem by using the voxelGrid node in worldSpace, parented to the camera. It creates point on the fly, and with a 3D texture (constant in worldSpace) I could easily randomize the position.

I'm now fighting with the motion blur because of the dynamic point generation but will share a setup once fully usable.

0 0
Scatter, rain setup & optimisation

To make it more clear :

Is there a way to scatter points in a volume and move this volume to change the visible points instead of generating 1 trillion points and filter only the ones you want to see with a bounding object...

By the way, not sure it's more clear...

0 0
Scatter, rain setup & optimisation

Hello dear SOuP users.

I'm trying to create a rain setup suited to high speed camera moves.
I find pretty easy to generate points, setup the scale of the drops depending on the distance, etc. BUT there's one thing I would like to avoid : Evaluating all the positionPP and then filter the result. Instead, I would like to evaluate only the needed points in worldSpace.
I've tried to detach the worldMatrix from the scatterNode, but it seems the points are only generated in the bounding box of the source object.

Is there a way to generate points in world space and move the area of generation without moving the points ?
Thanks in advance

0 0
Shatter & peak interior faces of solid shatter
I came across this discussion while searching for an answer to this thickness "problem".
I wanted to share some kind of solution I found :

While the source you're shattering has UVs, the thickness hasn't... so you can use the mapToMesh node to create a geometry that will have some 0 area faces corresponding to the thickness. You can then use the group node with a 0.0001 value in "face area" mode and you"ll be able to extract its components.
... fully procedural.

0 0
SOuP pointAttributeToArray -> attributeTransfer
You can replace the normals of your mesh by its binormals (pointAttributeToArray->point.inNormalPP) before querying it with the pointOnMeshInfo.
Another hack consists in putting the binormal values into the mesh colorPerVertex thanks to the arrayToPointColor, and then query the color instead of the normal for your binormal needs.
0 0
Voxel Reveal
Here is an example without the transition...

0 0
Voxel Reveal
Create a pointCloud on the targetMesh with the number of points of the original one, and one on the original mesh with the number of points of the target one. Blend the position of the voxel grid from one mesh to the other (original to original copy and target to target copy). Then find a way (change scale or opacity) to blend between the two moves.

You can animate the position with a blendArray node on positionPP or a pointNode from input.geometry to input.geometry2

good luck
0 0
Edit content of the point node by script.
Thanks a lot, I'll keep track of this post to help me one day or another.
0 0
count post selected

Add a Website Forum to your website.