# Difference between revisions of "Prim Class"

(Prim Class Auto Create) |
|||

Line 8: | Line 8: | ||

|class=Prim | |class=Prim | ||

|name=center | |name=center | ||

− | |type= | + | |type=tuple(x,y,z,w) |

− | |set= | + | |set=1 |

|text=Get or set the barycentric coordinate of this primitive. It is expressed as a named 4-tuple (x,y,z,w). | |text=Get or set the barycentric coordinate of this primitive. It is expressed as a named 4-tuple (x,y,z,w). | ||

}} | }} | ||

Line 15: | Line 15: | ||

|class=Prim | |class=Prim | ||

|name=max | |name=max | ||

− | |type= | + | |type=tuple(x,y,z,w) |

|set=0 | |set=0 | ||

|text=The maximum coordinates of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w). | |text=The maximum coordinates of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w). | ||

Line 22: | Line 22: | ||

|class=Prim | |class=Prim | ||

|name=min | |name=min | ||

− | |type= | + | |type=tuple(x,y,z,w) |

|set=0 | |set=0 | ||

|text=The minimum coordinates of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w) | |text=The minimum coordinates of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w) | ||

Line 29: | Line 29: | ||

|class=Prim | |class=Prim | ||

|name=normal | |name=normal | ||

− | |type= | + | |type=tuple(x,y,z,w) |

|set=0 | |set=0 | ||

|text=The calculated normal vector of this primitive, expressed as a named 4-tuple (x,y,z,w). | |text=The calculated normal vector of this primitive, expressed as a named 4-tuple (x,y,z,w). | ||

Line 36: | Line 36: | ||

|class=Prim | |class=Prim | ||

|name=owner | |name=owner | ||

− | |type= | + | |type=OP |

|set=0 | |set=0 | ||

|text=The OP to which this object belongs. | |text=The OP to which this object belongs. | ||

Line 43: | Line 43: | ||

|class=Prim | |class=Prim | ||

|name=size | |name=size | ||

− | |type= | + | |type=tuple(x,y,z,w) |

|set=0 | |set=0 | ||

|text=The size of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w). | |text=The size of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w). | ||

Line 50: | Line 50: | ||

|class=Prim | |class=Prim | ||

|name=weight | |name=weight | ||

− | |type= | + | |type=float |

|set=0 | |set=0 | ||

− | |text=The associated weight of the primitive. | + | |text=The associated weight of the primitive. Only certain primitives, such as those created by the Metaball SOP can modify this value from its default of 2.0. |

}} | }} | ||

{{ClassMember | {{ClassMember | ||

|class=Prim | |class=Prim | ||

|name=index | |name=index | ||

− | |type= | + | |type=int |

|set=0 | |set=0 | ||

|text=The primitive index in the list. | |text=The primitive index in the list. | ||

Line 69: | Line 69: | ||

|name=eval | |name=eval | ||

|call=eval(u, v) | |call=eval(u, v) | ||

− | |returns= | + | |returns=td.Position |

− | |text= | + | |text=Evaluate the position on the primitive given the u,v coordinates. u,v should be in the range [0,1]. Polygons and curves ignore the v parameter. |

− | Evaluate the position on the primitive given the u,v coordinates. u,v should be in the range [0,1]. Polygons and curves ignore the v parameter. | + | <syntaxhighlight lang=python> |

center = op('box1').prim[0].eval(0.5, 0.5) | center = op('box1').prim[0].eval(0.5, 0.5) | ||

+ | </syntaxhighlight> | ||

}} | }} | ||

{{ClassMethod | {{ClassMethod | ||

Line 78: | Line 79: | ||

|name=destroy | |name=destroy | ||

|call=destroy(destroyPoints=True) | |call=destroy(destroyPoints=True) | ||

− | |returns= | + | |returns=None |

− | |text= | + | |text=Destroy and remove the actual primitive this object refers to. This operation is only valid when the primitive belongs to a scriptSOP. Note: after this call, other existing Prim objects in this SOP may no longer be valid. |

− | Destroy and remove the actual primitive this object refers to. | + | *destroyPoints - (Keyword, Optional) If True, its points are destroyed as well, if false, they are simply detached. The argument is True by default. |

− | Note: after this call, other existing Prim objects in this SOP may no longer be valid. | ||

− | |||

}}}} | }}}} | ||

+ | {{SubSection|title=Special Functions | ||

+ | |text= | ||

+ | {{ClassMethod | ||

+ | |class=Prim | ||

+ | |name=len | ||

+ | |call=len(Prim) | ||

+ | |returns=int | ||

+ | |text=Returns the total number of vertices. | ||

+ | <syntaxhighlight lang=python> | ||

+ | a = len(op('box1').prim[0]) | ||

+ | </syntaxhighlight> | ||

+ | }} | ||

+ | {{ClassMethod | ||

+ | |class=Prim | ||

+ | |name=[] | ||

+ | |call=[index] | ||

+ | |returns=td.Vertex | ||

+ | |text=Get specific vertex given an integer index | ||

+ | <syntaxhighlight lang=python> | ||

+ | n = op('box1').prims[5][0] | ||

+ | </syntaxhighlight> | ||

+ | }} | ||

+ | {{ClassMethod | ||

+ | |class=Prim | ||

+ | |name=[] | ||

+ | |call=[row, col] | ||

+ | |returns=td.Vertex | ||

+ | |text=Get specific vertex from a Mesh given integer row and column values. | ||

+ | <syntaxhighlight lang=python> | ||

+ | v = op('grid1').prims[2,3] | ||

+ | </syntaxhighlight> | ||

+ | }} | ||

+ | {{ClassMethod | ||

+ | |class=Prim | ||

+ | |name=Iterator | ||

+ | |call=Iterator | ||

+ | |returns=td.Vertex | ||

+ | |text=Iterate over each vertex. | ||

+ | <syntaxhighlight lang=python> | ||

+ | for m in op('box1').prims[5]: | ||

+ | # do something with m, which is a Vertex | ||

+ | </syntaxhighlight> | ||

+ | }} | ||

<section end=HELPBODY /> | <section end=HELPBODY /> | ||

{{History}} | {{History}} | ||

{{#invoke:Category|list|Python Reference}} | {{#invoke:Category|list|Python Reference}} |

## Revision as of 15:54, 29 September 2017

A Prim describes an instance to a single geometry primitive. They are accessible through the SOP.prims member.

## Members[edit]

`center`

→ `tuple(x,y,z,w)`

:

Get or set the barycentric coordinate of this primitive. It is expressed as a named 4-tuple (x,y,z,w).

`max`

→ `tuple(x,y,z,w)`

**(Read Only)**:

The maximum coordinates of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w).

`min`

→ `tuple(x,y,z,w)`

**(Read Only)**:

The minimum coordinates of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w)

`normal`

→ `tuple(x,y,z,w)`

**(Read Only)**:

The calculated normal vector of this primitive, expressed as a named 4-tuple (x,y,z,w).

`owner`

→ `OP`

**(Read Only)**:

The OP to which this object belongs.

`size`

→ `tuple(x,y,z,w)`

**(Read Only)**:

The size of this primitive along each dimension, expressed as a named 4-tuple (x,y,z,w).

`weight`

→ `float`

**(Read Only)**:

The associated weight of the primitive. Only certain primitives, such as those created by the Metaball SOP can modify this value from its default of 2.0.

`index`

→ `int`

**(Read Only)**:

The primitive index in the list.

## Methods[edit]

`eval(u, v)`

→ `td.Position`

:

Evaluate the position on the primitive given the u,v coordinates. u,v should be in the range [0,1]. Polygons and curves ignore the v parameter.

center = op('box1').prim[0].eval(0.5, 0.5)

`destroy(destroyPoints=True)`

→ `None`

:

Destroy and remove the actual primitive this object refers to. This operation is only valid when the primitive belongs to a scriptSOP. Note: after this call, other existing Prim objects in this SOP may no longer be valid.

- destroyPoints - (Keyword, Optional) If True, its points are destroyed as well, if false, they are simply detached. The argument is True by default.

{{SubSection|title=Special Functions |text=

`len(Prim)`

→ `int`

:

Returns the total number of vertices.

a = len(op('box1').prim[0])

`[index]`

→ `td.Vertex`

:

Get specific vertex given an integer index

n = op('box1').prims[5][0]

`[row, col]`

→ `td.Vertex`

:

Get specific vertex from a Mesh given integer row and column values.

v = op('grid1').prims[2,3]

`Iterator`

→ `td.Vertex`

:

Iterate over each vertex.

for m in op('box1').prims[5]: # do something with m, which is a Vertex

TouchDesigner Build:

An Operator Family that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.

Any of the procedural data operators. OPs do all the work in TouchDesigner. They "cook" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.

A sequence of vertices form a Polygon in a SOP. Each vertex is an integer index into the Point List, and each Point holds an XYZ position and attributes like Normals and Texture Coordinates.