MeshInstancer_v4 Op
Draw the same mesh multiple times on the GPU
Summary (oneliner)
A performant way to render a 3d object many times.
The 3d object or mesh to be rendered needs to be connected as a geometry. Most meshes in cables output a geometry object that you can connect. Imported 3d meshes can also output geometries, e.g. see GltfGeometry operator.
The object can be scaled differently each time, or have a different color, etc.
The Billboarding option will render the object always perpendicular to the screen. Spherical billboarding means the object will be oriented flat to the screen, this is handy for 2d overlays. Cylindrical billboarding can be used for instancing flat objects in a 3d environment, often used in games for rendering trees, grass or bushes as 2d planes.
- Ops.Gl.MeshInstancer_v4
- Core Op - Official cables op
- MIT
Documentation (markdown)
Issues
Example patch id
Youtube ids (comma seperated)
Op Licence
Caniuse query
Example Patch mesh instancer
This patch demonstrates how we can generate 3 arrays of random numbers between 0-1. Using the arrayMultiply op allows us to smoothly change the range of each array going into the position, scale and rotation arrays.
Youtube Video Tutorial
INPUT PORTS
Trigger In
The shape that will be instanced
Global scale for all instances, disabled if scale array is used
Limit Number of Instances
Enable to set a limit on how many instances are created
Parameters
Needs an XYZ array to determine the positions of each instance
Needs an XYZ array to determine the scale of each instance
Needs an XYZ array to determine the XYZ rotation of each instance. 0 - 360 degrees.
Pick a material blend mode with an integer
Needs an RGBA array to determine the color of each instance.
Needs an array4 in standard UV range (0-1). First two numbers are for UV coordinates. Second two are for UV scale. [ U, V, U scale, V scale ]
OUTPUT PORTS
Trigger Out
Total number of instances/shapes
Patches using MeshInstancer_v4
Changelog
created op | cables - 2019-11-14 17:46 | |
Ops.User.cables.MeshInstancer_v3 renamed to Ops.Gl.MeshInstancer_v3 | cables - 2019-11-14 19:03 | |
Ops.Gl.MeshInstancer_v3 renamed to Ops.Gl.MeshInstancer_v4 | pandur - 2020-07-23 11:24 | |
added core lib: cgl_shadermodifier | pandur - 2020-07-23 15:13 | |
feature | added option to set rotation from normals array | pandur - 2024-01-23 19:05 |
feature | Added options for billboarding | pandur - 2024-02-15 10:22 |