Open PavelBlend opened 3 years ago
Thank for your help! Here's the possibilities I've thought for taichi
field operations:
Field storage (ti.field
, ti.Vector.field
, ti.Matrix.field
).
Can write
or read
.
Like field, but read
-only, can't be write
.
Field sockets can be treated as sampler too.
Note: Field/sampler sockets with different shapes should not be connected directly.
Non-field values, can be scalar / vector / matrix.
Note: scalars / vectors / matrices with different dimensions should not be connected directly.
Categories: Input, Output, Storage, Sampler, Gather, Scatter, Physics.
Declares a field for storage. Category: Storage Inputs: N/A Options: field shape, sparse layouts, data type (float, int, ...), matrix dimension (n and m) Outputs: the field
Get the informations of current scene. Category: Input Inputs: N/A Outputs: current frame number, etc.
Sample a sampler, store it into a r/w field storage of same shape (for buffering purpose). Category: Storage Inputs: the sampler Outputs: the field
A sampler that always return the constant. Category: Sampler Inputs: the constant value Options: sampler shape, data type (float, int, ...), matrix dimension (n and m) Output: a sampler
A sampler that always return the acquired index. Category: Sampler Inputs: the constant value Options: sampler shape Output: a sampler
Category: Sampler Inputs: lhs sampler, rhs sampler Options: operation type (add, sub, mul...) Outputs: result sampler
Category: Gather Inputs: a 2D or 3D sampler, the blur radius value Outputs: result field storage
Category: Gather A sampler that bilerps / trilerps the input 2D / 3D sampler, to a different shape Inputs: the input sampler Options: output sampler shape Output: a sampler with the new shape
Category: Sampler A sampler that revamps the index into a specific sampler Inputs: the input sampler, the index sampler Output: the indiced result sampler
Category: Storage Update the sampler result to field storage on each substep. Inputs: a sampler, a field storage Outputs: still the field storage (for convinence of appending more nodes to it)
Category: Physics Integrate particles using the forward-euler explicit method. Inputs: particle position sampler, particle velocity sampler Outputs: the particle position sampler.
Category: Physics Project grid velocity field to be zero-diversity eulerian fluid. Inputs: gravity sampler Outputs: the particle position sampler.
Category: Scatter Scatter particles attributes (like pos, vel, mass) to a destination field (p2g in taichi_elements). Inputs: particle attribute sampler, grid field storage Options: stencil type (B-spline, etc.) Outputs: the grid field storage
Category: Gather Gather particles attributes (like pos, vel, mass) from a destination field (g2p in taichi_elements). Inputs: grid sampler, particle attribute field storage Options: stencil type (B-spline, etc.) Outputs: the grid field storage
Category: Scatter Inputs: particle position sampler, weight per particle scalar Options: stencil type (gaussian, etc.) Outputs: the voxel field storage
Category: Mesh
Marching voxels into mesh of iso faces.
Inputs: voxel sampler, mesh verts
field storage, faces
field storage
Outputs: mesh verts
field storage, faces
field storage
Category: Output
Visualize a mesh in Blender viewport
Inputs: mesh verts
sampler, faces
sampler
Options: output mesh sequence to which Blender object
Outputs: N/A
Category: Output Visualize a point cloud in Blender viewport Inputs: particle position sampler Options: output mesh sequence to which Blender object Outputs: N/A
Btw, I also want to intergrate my renderer taichi_three
, which already have a node-alike system for materials and post-processing, see examples/hdr_blooming.py
for example.
@archibate Can you still tell me which categories to create for the nodes?
What categories should I put the nodes into?
Oh I see! Sorry for my ignorance, just added Category:
for each node in the previous comment.
@archibate I made ui nodes. Can you check it for correctness? If you need to change something, then say I will. ebf86c067626dc4b7444ecd53011000cb4c650b4
tomorrow I will write the code that is responsible for collecting information from the node tree.
Thank for the amazing speed! Some questions:
The Field Shape
here shouldn't be a single value, but a tuple instead. For example: ()
, (42, )
, (23, 45)
, (77, 88, 99)
. The same to Matrix Dimension
.
Is this possible for the blender UI? Thank in advance!
Is there a reason why this was removed? I can't find references to it but the video tutorials make use of it. thanks
Is there a reason why this was removed? I can't find references to it but the video tutorials make use of it. thanks
maybe you should select it. hope it's not too late,
maybe you should select it. hope it's not too late,
It's not thanks a lot!!
I can help create a node system for taichi_blend. @archibate can you tell which nodes are needed? I need a list of nodes and a list of their sockets.