Copy SOP

From TouchDesigner Documentation
Jump to: navigation, search

Summary
[edit]

The Copy SOP lets you make copies of the geometry of other SOPs and apply a transformation to each copy.

It also allows you to copy geometry to points on an input template.

PythonIcon.pngcopySOP_Class


Parameters - Page

Source Group sourcegrp - Specifies a subset of input primitives to copy from. Accepts patterns, as described in Pattern Matching.  

Template Group templategrp - Specifies a subset of template primitives from which to copy onto. Accepts patterns, as described in Pattern Matching.  


Parameters - Copy Page

Specifies a subset of template primitives from which to copy onto. Accepts patterns, as described in Pattern Matching.

Number of Copies ncy - Sets number of Copies to be made of the source. For a template input, it specifies the number of copies to be placed at each point of the template.  

Primitives per Point nprims - Defines how many primitives to copy from each point.  

Rotate to Normal nml - Only used when a template input is specified. If the template is a sphere, and the first input is a circle, a circle is placed at each point of the sphere. With this option on, all the circles will re-orient to face the surface of the sphere (a default sphere has normals radiating outwards from the center).

If an up attribute exists on the template geometry, then this will be used (along with the normal) to fully define the rotates for the copies. An up attribute is created with the Point SOP.  

Transform Cumulative cum - Each transformation "builds" on the location left by the one before it. Transformations are cumulative as the Copy SOP produces new copies.  

Transform Order xord - - Sets the overall transform order for the transformations. The Transform Order determines the order in which transformations take place. Depending on the order, you can achieve different results using the exact same values. Choose the appropriate order from the menu.

  • Scale Rotate Translate srt -
  • Scale Translate Rotate str -
  • Rotate Scale Translate rst -
  • Rotate Translate Scale rts -
  • Translate Scale Rotate tsr -
  • Translate Rotate Scale trs -

Rotate Order rord - - Sets the order of the rotations within the overall transform order.

  • Rx Ry Rz xyz -
  • Rx Rz Ry xzy -
  • Ry Rx Rz yxz -
  • Ry Rz Rx yzx -
  • Rz Rx Ry zxy -
  • Rz Ry Rx zyx -

Translate t - - These allow you to specify the Translation (how much it moves over in a given direction), Rotation, and the Scale between each copy. Three columns are given for X, Y, and Z coordinates. Guide geometry is provided for the Pivot's translations. The Pivot is represented by a single red dot in the Viewport. Changing the Pivot parameters moves this point of reference.

  • X tx -
  • Y ty -
  • Z tz -

Rotate r - - These allow you to specify the Translation (how much it moves over in a given direction), Rotation, and the Scale between each copy. Three columns are given for X, Y, and Z coordinates. Guide geometry is provided for the Pivot's translations. The Pivot is represented by a single red dot in the Viewport. Changing the Pivot parameters moves this point of reference.

  • X rx -
  • Y ry -
  • Z rz -

Scale s - - These allow you to specify the Translation (how much it moves over in a given direction), Rotation, and the Scale between each copy. Three columns are given for X, Y, and Z coordinates. Guide geometry is provided for the Pivot's translations. The Pivot is represented by a single red dot in the Viewport. Changing the Pivot parameters moves this point of reference.

  • X sx -
  • Y sy -
  • Z sz -

Pivot p - - These allow you to specify the Translation (how much it moves over in a given direction), Rotation, and the Scale between each copy. Three columns are given for X, Y, and Z coordinates. Guide geometry is provided for the Pivot's translations. The Pivot is represented by a single red dot in the Viewport. Changing the Pivot parameters moves this point of reference.

  • X px -
  • Y py -
  • Z pz -

Uniform Scale scale - Uniform Scale allows you to shrink or enlarge geometry along all three axes simultaneously.  

Normals Maintain Length vlength - Vector type attributes (i.e. normals, velocity) maintain the same length under transforms. i.e. When geometry is scaled, the normals remain constant in length.  

Create Output Groups newg - If selected, this creates a group for each copy number, and places each primitive created at that stage into it.  

Copy Groups copyg - Defines the base name of the groups created.  

Look At lookat - Orients the copied geometry to lookat, or point to, the object component specified in the parameter.  

Up Vector upvector - - When specifying a Look At, it is possible to specify an up vector for the lookat. Without using an up vector, it is possible to get poor animation when the lookat object passes through the Y axis of the target object.

  • X upvectorx -
  • Y upvectory -
  • Z upvectorz -


Parameters - Stamp Page

Stamping is allowed in any parameter in TouchDesigner. The only requirement is that the stamped parameter is upstream in some fashion from the Copy SOP doing the stamping.

Stamp Inputs stamp - When enabled, it will Stamp proceeding variables for each input copied.  

Param 1 param1 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 1 val1 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 2 param2 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 2 val2 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 3 param3 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 3 val3 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 4 param4 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 4 val4 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 5 param5 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 5 val5 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 6 param6 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 6 val6 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 7 param7 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 7 val7 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 8 param8 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 8 val8 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 9 param9 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 9 val9 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Param 10 param10 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  

Value 10 val10 - Token and value of each stamp variable. Stamped parameters are accessible via the global fetchStamp() method in the td Module in python, or param() in tscript. See the example, below.  


Parameters - Attributes Page

This page allows you to determine how point attributes on template geometry affect attributes on the source geometry. The template attribute can modify the source in four ways:

  • Set - Override the source attribute.
  • Multiply - Multiply the source attribute.
  • Add - Get Added to the source attribute.
  • Sub - Get Subtracted from the source attribute.

The template point attributes are able to affect point, primitive, or vertex attributes in the source geometry simply by entering values in the appropriate fields.

Use Template Point Attribs doattr -  

Copy to Point setpt -  

Copy to Primitive setprim -  

Copy to Vertex setvtx -  

Multiply Point mulpt -  

Multiply Primitive mulprim -  

Multiply Vertex mulvtx -  

Add Point addpt -  

Add Primitive addprim -  

Add Vertex addvtx -  

Subtract Point subpt -  

Subtract Primitive subprim -  

Subtract Vertex subvtx -  


Tips

You can use the me.copyTotal python member to calculate the degrees of rotation for a given number of copies. For example, if you have 28 copies, you can set the rotation to be: 360/me.copyTotal - this would automatically give you 12.8571 degrees, evenly spacing your 28 copies around the full circumference of the circle.

Using a Particle SOP as the Template object, you can copy objects defined in the Copy Data input to each particle template. This allows you, for example, to copy a Bee to each particle to create a swarm of bees.

Make a series of copies about an axis, and skin them to achieve lathe-like effects, similar to the results achieved with the Revolve SOP.


Examples

Creating Stamped Geometry
[edit]

  1. Place a Circle SOP, and set its type to Polygon.
  2. Set the number of Divisions in the Circle to: fetchStamp("sides",3) The method fetchStamp() returns the value of the global parameter sides. If it is not yet defined it will return a value of 3.
  3. Append a Copy SOP, and set the Number of Copies to 5; and set Translate X to: 2.5 .
  4. In the Stamp page of the Copy SOP, turn on Stamp Inputs. Set Param 1 to: sides and me.copyIndex+3
    StampEGparms.jpg

  5. This creates a triangle on the first stamped copy; a square on the next; a pentagon on the third, and so on. The geometry for each copy is cooked separately.

TouchGeometry249.gif

You can set multiple stamp Params at once and they can be used anywhere in the ancestry of the copy's input.


Operator Inputs

  • Input 0 -
  • Input 1 -

TouchDesigner Build:

SOPs
Add • Alembic • Align • Arm • Attribute Create • Attribute • Basis • Blend • Bone Group • Boolean • Box • Bridge • Cache • Cap • Capture Region • Capture • Carve • CHOP to • Circle • Clay • Clip • Convert • Copy • CPlusPlus • Creep • Curveclay • Curvesect • DAT to • Deform • Delete • Divide • Extrude • Facet • File In • Fillet • Fit • Font • Force • Fractal • Grid • Group • Hole • Import Select • In • Introduction To SOPs id • Inverse Curve • Iso Surface • Join • Joint • Kinect • Lattice • Limit • Line • Line Thick • LOD • LSystem • Magnet • Material • Merge • Metaball • Model • Noise • Null • Object Merge • Oculus Rift • OpenVR • Out • Particle • Point • Polyloft • Polypatch • Polyreduce • Polyspline • Polystitch • Primitive • Profile • Project • Rails • Experimental:Raster • Ray • Rectangle • Refine • Resample • Revolve • Script • Select • Sequence Blend • Skin • Sort • Sphere • Spring • Sprite • Stitch • Subdivide • Superquad • Surfsect • Sweep • Switch • Text • Texture • Torus • Trace • Trail • Transform • Trim • Tristrip • Tube • Twist • Vertex • Wireframe • ZED

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

Each SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.

Information associated with SOP geometry. Points and primitives (polygons, NURBS, etc.) can have any number of attributes - position (P) is standard, and optional are normals (N), texture coordinates (uv), color (Cd), etc.

A surface type in SOPs including polygon, curve (NURBS and Bezier), patch (NURBS and Bezier) and other shapes like sphere, tube, and metaball. Points and Primitives are part of the Geometry Detail, which is a part of a SOP.

The 3D data held in SOPs and passed for rendering by the Geometry COMP.