Overview

CopyPoints is copying points/polygons/segments and other structure from any point object(s) or generator(s) to editable Polygon or Spline Object.

As a result you'll get editable source structure with read-only state of point positions.

Supports Primitives, Cloners, Volume Meshers, Tracers and many other point/polygon/spline generators.

Gives control over specific type of structure or attributes to be copied.

Version 1.3.1 overview

Change log

1.9.0 (2023-11-26) — Cinema4D 2024 compatible release.

1.8.4 (2022-02-06) — New attributes to copy. New option to transfer attributes by sampling 3D space.

1.6.11 (2021-12-29) — Performance optimizations. Better processing of source with complex generators tree.

1.6.9 (2021-12-16) — Performance issues resolved. Updated UI/UX.

1.6.6 (2021-12-08) — Source attributes copying. Updated UI/UX. R21-S22 support is added (but with weaken performance).

1.4.2 (2021-11-30) — Updated UI/UX.

1.3.1 (2021-11-25) — First public release.

Showcase

Installation

I would appreciate if you'll grab your copy of the plugin from the kaktak.gumroad.com/l/copypoints
Last update: version 1.8.5 from August-11-2022

Extract plugin into application plugins folder or into the user's plugin folder (see below)

Click 'Open Preferences Folder...' button

Restart Cinema4D app and enjoy.

Plugin is compatible with Maxon Cinema4D R23 — R25 (also support versions below, but not quite well tested).

Tag properties

Right click on any object with point structure (polygon or spline) in object manager and choose CopyPoints tag.

Hold Ctrl/Cmd key while adding a new tag to create a new editable polygon target object and assign chosen object as a Source. Tag would be attached to a newly created target object.

Hold Shift key while adding a new tag to create a new editable spline target object and assign chosen object as a Source. Tag would be attached to a newly created target object.

Hold Alt key additionally to Ctrl/Cmd or Shift while adding a new tag to leave it on a chosen object as a source.

Buttons Add Polygon Target Add Spline Target

Buttons appear if CopyPoints tag has no target.

Creates target Editable Polygon or Spline object correspondingly, assign current object as the Source and swap CopyPoints tag onto newly created editable object.

Hold Alt key while pressing button to leave tag on existing source object.

Buttons Add Vertex Map Add Vertex Color

Buttons appear if CopyPoints tag is having editable Polygon Object target.

Creates on a target Vertex Weight Map or Vertex Color correspondingly.

Object Link

Drop here any Null with sub-objects tree or a Generator as a source.

Or Editable Polygon or Spline as a target.

Direction

Set Object Link role as a source, or as a target.

Copy from Source

Treat Object Link as source, and tag-owner as target.

Copy to Target

Treat Object Link as target, and tag-owner as source.

Space

Target generation space.

Global

The source point structure would exactly replicated in the Target object in the world coordinates.

Generated points wouldn't be affected by Target's transformation.

Local

The source point structure will be positioned relative to the Target Object.

Generated points would be affected by Target's transformation.

Pos & Rot

The source point structure will be positioned relative to the Target Object.

Additionally Target's Axis would be linked to Source Axis, excluding Scale value.

PSR

The source point structure will be positioned relative to the Target Object.

Additionally Target's Axis would be linked to Source Axis, including Scale value.

Attributes

Keep Self Attributes

Keep target's self attributes.

If source have no attributes with same title, this option would keep these attributes no matter what options are selected below.

UVW

Deal with Source UVW tag.

If source have multiple UVW tags all of them would be copied.

Skip

Do not handle Source UVWs, existing UVWs would applied automatically where possible.

Exact

Exactly replicates Source UVWs.

Off

Delete Target's UVWs.

Exist

Replicates only UVWs that exist in both Source and Target objects.

Normals

Deal with Source Normals tag.

Skip

Do not handle Source Normals, existing Normals would applied automatically where possible.

Exact

Exactly replicates Source Normals.

Off

Delete Target's Normals.

Exist

Replicates Normals if it exist in both Source and Target objects.

Phong

Deal with Source Phong tag.

Skip

Do not handle Source Phong, existing Phong would applied automatically where possible.

Exact

Exactly replicates Source Phong.

Off

Delete Target's Phong.

Exist

Replicates Phong if it exist in both Source and Target objects.

Point Sel.

Deal with Source Point Selections (built-in selections are also supported).

  • Source Object (Torus primitive under Voronoi Fracture)
  • One of Target Object's Point Selections

Skip

Do not handle Source Point Selections, existing Point Selections would remain.

Exact

Exactly replicates Source Point Selections.

Off

Delete Target's Point Selections.

Exist

Replicates only Point Selections that exist in both Source and Target objects.

Edge Sel.

Deal with Source Edge Selections (built-in selections are also supported).

  • Source Object (Torus primitive under Voronoi Fracture)
  • One of Target Object's Edge Selections

Skip

Do not handle Source Edge Selections, existing Edge Selections would remain.

Exact

Exactly replicates Source Edge Selections.

Off

Delete Target's Edge Selections.

Exist

Replicates only Edge Selections that exist in both Source and Target objects.

Polygon Sel.

Deal with Source Polygon Selections (built-in selections are also supported).

  • Source Object (Torus primitive under Voronoi Fracture)
  • One of Target Object's Polygon Selections

Skip

Do not handle Source Polygon Selections, existing Polygon Selections would remain.

Exact

Exactly replicates Source Polygon Selections.

Off

Delete Target's Polygon Selections.

Exist

Replicates only Polygon Selections that exist in both Source and Target objects.

Vertex Weight

Deal with Source Vertex Weights (built-in vertex weights are also supported).

  • Source Object (Torus primitive under Voronoi Fracture)
  • One of Target Object's Vertex Weights

Skip

Do not handle Source Vertex Weights, existing Vertex Weights would remain.

Exact

Exactly replicates Source Vertex Weights.

Off

Delete Target's Vertex Weights.

Exist

Replicates only Vertex Weights that exist in both Source and Target objects.

Vertex Color

Deal with Source Vertex Colors (built-in vertex colors are also supported).

  • Source Object (Polygon Object with vertex color tag under Voronoi Fracture)
  • One of Target Object's Vertex Colors

Skip

Do not handle Source Vertex Colors, existing Vertex Colors would remain.

Exact

Exactly replicates Source Vertex Colors.

Off

Delete Target's Vertex Colors.

Exist

Replicates only Vertex Colors that exist in both Source and Target objects.

Object ID

Generate Object IDs Vertex Weight Map (useful in case if Source includes other objects in subtree).

  • Clones made of cubes as Source on the left. Editable Poly with Vertex Weight Map on the right.

Object Color

Generate Object Color Vertex Color Map (support Display and Clone colors).

  • Clones made of colored cubes as Source on the left. Editable Poly with Vertex Color Map on the right.

Segment ID

Generate Segment IDs Vertex Weight Map. Each Mesh Segment piece would have own Weight in map.

  • Clones made of cubes as Source on the left. Editable Poly with Vertex Weight Map on the right.

Segment Alt ID

Generate Segment IDs Vertex Weight Map. Each Mesh Segment piece would have own Weight in map.

Similar to Segment ID, but tries to keep ranges for segments per object.

  • Clones made of cubes as Source on the left. Editable Poly with Vertex Weight Map on the right.

Transfer

This is an experimental feature which is sampling Point or Clone attributes from different Origins in 3D Space.

Whole feature makes sense for Polygonal Target Objects only.

Currently it doesn't perform well, so in case if it produce suitable results it's better to bake result into Alembic and then delete Object/Tag or disable Tag execution at the least.

Enable Transfer

As transferring feature is very resource consuming it might be a handy feature to enable/disable transferring but keep all the settings.

Source Switcher

Switching between single Master Source and Separate Sources.

Master

Enables single Source for all available attributes.

Separate

Enables separate source per each attribute.

Master Source

Shown if Source Switcher is set as Master.

Link to Origin. It might be Polygon, Generator, Matrix, Cloner objects. As well as UVW, Vertex Weight and Vertex Color maps.

Point Radius 0..1,000 m

Defines Origin's point/clone radius.

Comparable to Cinema 4D Fields built-in Sampling where point/clone radius is 0, here it possible to set radius of the points to retrieve attributes from the Origin more accurate.

0 radius has better performance.

Use Scale

Only works with MoGraph Matrix & Cloner objects. Multiplies point radius by clone scale value (takes maximum of X, Y, Z scale values).

Search Radius 0..100,000 m

Defines search radius around Target's points.

It's relatively the same option as Cinema 4D Fields built-in Sampling radius.

Search Method

Defines search method.

Nearest

Searches for nearest Origin samples in the Search Radius with the given Threshold value.

Average

Takes all Origin samples in the Search Radius.

Caution: This might freeze Cinema 4D app for a long time if Search Radius is too high and/or Origin has a lot of samples and/or Target has a lot of points. Use with care, make a backups.

Threshold 0..100 m

Defines threshold value for Nearest Search Method.

Keep it smallest possible.

UVW

  • Origin Polygon Object with texture
  • Relative position in space
  • Target Object with texture on it
  • Origin Matrix Grid Object (Might have no colors at all)
  • Relative position in space
  • Target Object with texture on it

On

Enables UV transferring process.

UVW Tag

Link to the target's UV map where transferred data would be stored.

Mix Method

Method to mix sampled values.

Normal

Calculates arithmetical average.

Min

Takes minimal sampled value.

Max

Takes maximum sampled value.

Exist Tag Data

It might happen not all the Target points will find samples in the Search Radius.

This option would set zero values to nan-sampled points, or keep existed data.

Clean

Set all non-sampled points with UV coordinates (0,0).

Keep

Leave non-sampled point values as is.

This means data might be kept from previous sampling, or copied from the Source Object if it was exist there.

UVW Source

Shown if Source Switcher is set as Separate.

Link to UV Origin. It might be Polygon, Generator, Matrix, Cloner objects. As well as UVW map.

Attributes description is the same as in Master Source.

Weight

  • Origin Polygon Object with weight map
  • Relative position in space
  • Target Object with weight map
  • Origin Matrix Grid Object (Display Weight is enabled)
  • Relative position in space
  • Target Object with weight map

On

Enables Weight transferring process.

Vertex Weight Tag

Link to the target's Vertex Weight map where transferred data would be stored.

Mix Method

Method to mix sampled values.

Normal

Calculates arithmetical average.

Min

Takes minimal sampled value.

Max

Takes maximum sampled value.

Exist Tag Data

It might happen not all the Target points will find samples in the Search Radius.

This option would set zero values to nan-sampled points, or keep existed data.

Clean

Set all non-sampled points with weight of 0.

Keep

Leave non-sampled point values as is.

This means data might be kept from previous sampling, or copied from the Source Object if it was exist there.

Weight Source

Shown if Source Switcher is set as Separate.

Link to UV Origin. It might be Polygon, Generator, Matrix, Cloner objects. As well as Weight map.

Attributes description is the same as in Master Source.

Color

  • Origin Polygon Object with color map
  • Relative position in space
  • Target Object with color map
  • Origin Matrix Grid Object
  • Relative position in space
  • Target Object with color map

On

Enables Color transferring process.

Vertex Color Tag

Link to the target's Vertex Color map where transferred data would be stored.

Mix Method

Method to mix sampled values.

Normal

Calculates arithmetical average.

Min

Takes minimal sampled value.

Max

Takes maximum sampled value.

Exist Tag Data

It might happen not all the Target points will find samples in the Search Radius.

This option would set zero values to nan-sampled points, or keep existed data.

Clean

Set all non-sampled points with color of black.

Keep

Leave non-sampled point values as is.

This means data might be kept from previous sampling, or copied from the Source Object if it was exist there.

Color Source

Shown if Source Switcher is set as Separate.

Link to UV Origin. It might be Polygon, Generator, Matrix, Cloner objects. As well as Color map.

Attributes description is the same as in Master Source.

Details

Cell Size 0..100,000 m

This value is used internally for calculations.

Advanced

Method

Defines structure replicating method.

It's quite important to adjust tag's execution priority in order to get proper structure.

Basically these three options might give proper look: Expression+0, Generators+0, Generators+401.

But feel free to experiment.

CSTO

Creates same point structure as built-in command Current State to Object.

In certain cases you might have wrong geometry to be generated. So you'll need to change tag's priority to Generator+401 you might have identical to Source Object look. But somehow performance would be decreased.

Has nice balance between performance and capabilities.

Cache

Retrieves real representation of the source object, including spline dynamics deformation and some other specific modifiers.

Normally you would get one frame delay.

When tag's priority is set to Generator+401 it might have identical to Source Object look. But somehow performance would be decreased.

Optimization

Defines optimization method.

That's not mentioned in public space, but Cinema4D app tries to force update generators on every user interaction, even on Mouse Move event.

So I made decision to provide optimization option, what would help to deal with super-hi-poly structures with ease.

None

No optimization. Target object would be redrawn based on Cinema4D app own algorithms.

Redraw frequency: often.

Smart

Combination of Per Frame and Dirty, whatever happens earlier.

Doesn't work well with Voronoi Fracture with Effectors as Source Object.

Redraw frequency: average.

Frame

Only redraw Target Object once per frame. That's recommended option for final rendering.

Redraw frequency: once per frame.

Dirty

Redraw Target Object based on comparing last and current object attributes and hierarchy changes.

Doesn't work well with Voronoi Fracture with Effectors as Source Object.

Redraw frequency: rare.

Structure

Limit source structure type, like polygon, spline or point.

Same type

Replicates Source structure of the same type as Target.

If Source doesn't have same type of the structure, Target would be empty.

Fallback

Replicates Source structure of the same type as Target.

If Source doesn't have same type of the structure, alternative structure would be used as a Source.

Polygons/Segments

Deal with Source Polygons for the Polygon object, or Source Segments for the Spline object.

Skip*

Do not handle Source Polygons/Segments, existing Polygons/Segments would applied automatically where possible.

* Unstable, might crash Cinema4D app.

Exact

Exactly replicates Source Polygons/Segments.

Off

Delete Target's Polygons/Segments.

Exist*

Replicates Polygons/Segments if it exist in both Source and Target objects.

* Unstable, might crash Cinema4D app.