Localizing a shared texture projection

40 views
Skip to first unread message

Matt Lind

unread,
Jun 11, 2012, 5:58:11 PM6/11/12
to soft...@listproc.autodesk.com

Have a unique one that pops up from time to time, but one of those things I keep forgetting what the solution is.

 

One of our environment artists has created a very large scene consisting of 25,000+ objects.  Many of which are duplicated from a common source object.  By default, when duplicating an object Softimage reuses/shares the texture projection(s) between source and duplicate as a means of efficiency.

 

The problem is she needs to animate the texture projection’s translation on only a few of the duplicates.  However, keying any parameter in the Texture Projection Def property causes all objects in the scene (derived from the same source object) to have it’s textures animated the same way.  We’ve looked in all the menus, tried freezing projections and so on, but cannot find a way to localize the texture projection to the duplicated object to break the relationship.  We have resorted to a workaround of using the copy/paste UV tools in the texture editor – which is OK if we only had to do this for one object.  Unfortunately she must do this for many objects and this workaround is quite laborious. 

 

We tried CTRL + dragging the cluster between objects since they have identical topology, but softimage only copied the cluster, not the texture projection inside of it.  So we tried CTRL + dragging the texture projection onto the duplicate which copied the projection, but still shared the texture Projection def property underneath.

 

 

Anybody remember how to localize a texture projection so it isn’t shared with anything else in the scene?

 

 

Matt

 

 

 

Matt Lind

unread,
Jun 11, 2012, 6:00:53 PM6/11/12
to soft...@listproc.autodesk.com

Let me add – without having to resort to using the SDK, which I already know I can do.

Grahame Fuller

unread,
Jun 11, 2012, 6:24:32 PM6/11/12
to soft...@listproc.autodesk.com
If I understand correctly, Get > Property > Texture Projection > Connect to Support, then pick the existing support. You'll also need to make sure that the textures use the correct projection in the render tree.

gray
Sent: Monday, June 11, 2012 06:01 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

Let me add - without having to resort to using the SDK, which I already know I can do.



From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 2:58 PM
To: soft...@listproc.autodesk.com
Subject: Localizing a shared texture projection

Have a unique one that pops up from time to time, but one of those things I keep forgetting what the solution is.

One of our environment artists has created a very large scene consisting of 25,000+ objects. Many of which are duplicated from a common source object. By default, when duplicating an object Softimage reuses/shares the texture projection(s) between source and duplicate as a means of efficiency.

The problem is she needs to animate the texture projection's translation on only a few of the duplicates. However, keying any parameter in the Texture Projection Def property causes all objects in the scene (derived from the same source object) to have it's textures animated the same way. We've looked in all the menus, tried freezing projections and so on, but cannot find a way to localize the texture projection to the duplicated object to break the relationship. We have resorted to a workaround of using the copy/paste UV tools in the texture editor - which is OK if we only had to do this for one object. Unfortunately she must do this for many objects and this workaround is quite laborious.
winmail.dat

Matt Lind

unread,
Jun 11, 2012, 6:32:42 PM6/11/12
to soft...@listproc.autodesk.com

…and what do we do if the objects don’t have a texture support?  (explicit UV)

 

 

Matt

 

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Grahame Fuller
Sent: Monday, June 11, 2012 3:25 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

 

If I understand correctly, Get > Property > Texture Projection > Connect to Support, then pick the existing support. You’ll also need to make sure that the textures use the correct projection in the render tree.

 

gray

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 06:01 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

 

Let me add – without having to resort to using the SDK, which I already know I can do.

 

 

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 2:58 PM
To: soft...@listproc.autodesk.com
Subject: Localizing a shared texture projection

 

Have a unique one that pops up from time to time, but one of those things I keep forgetting what the solution is.

 

One of our environment artists has created a very large scene consisting of 25,000+ objects.  Many of which are duplicated from a common source object.  By default, when duplicating an object Softimage reuses/shares the texture projection(s) between source and duplicate as a means of efficiency.

 

The problem is she needs to animate the texture projection’s translation on only a few of the duplicates.  However, keying any parameter in the Texture Projection Def property causes all objects in the scene (derived from the same source object) to have it’s textures animated the same way.  We’ve looked in all the menus, tried freezing projections and so on, but cannot find a way to localize the texture projection to the duplicated object to break the relationship.  We have resorted to a workaround of using the copy/paste UV tools in the texture editor – which is OK if we only had to do this for one object.  Unfortunately she must do this for many objects and this workaround is quite laborious. 

pet...@skynet.be

unread,
Jun 12, 2012, 3:22:40 AM6/12/12
to soft...@listproc.autodesk.com
not a solution but a workaround (maybe) -
could you make a duplicate of the material/materials for these objects, and include a UV edit in the tree, from which you can transform/animate the UV’s.
this would require resorting to texture projection lookup node and use of nodes with inputs for UV coordinates.
if the objects share a single or only a few materials, this should be quite feasible.

Dan Yargici

unread,
Jun 12, 2012, 5:08:59 AM6/12/12
to soft...@listproc.autodesk.com
Hi Matt.

Forgive me if I misunderstood the issue, I tried to read through your post carefully.

It's seems that perhaps you missed trying one thing.  You can Copy/Paste UVs in the TE from one object to multiple targets with the same topology.

If you run this:

NewScene(null, null);
CreatePrim("Cube", "MeshSurface", null, null);
SetValue("cube.polymsh.geom.subdivu", 3, null);
SetValue("cube.polymsh.geom.subdivv", 3, null);
SetValue("cube.polymsh.geom.subdivbase", 3, null);
CreateProjection("cube", siTxtSpherical, null, null, "Texture_Projection", null, null, null);
CreateShaderFromProgID("Softimage.txt2d-image-explicit.1.0", "Sources.Materials.DefaultLib.Scene_Material", "Image");
SIConnectShaderToCnxPoint("Sources.Materials.DefaultLib.Scene_Material.Image.out", "Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", false);
SIConnectShaderToCnxPoint("Sources.Materials.DefaultLib.Scene_Material.Image.out", "Sources.Materials.DefaultLib.Scene_Material.Phong.diffuse", false);
SetDisplayMode("Camera", "texturedecal");
Duplicate("cube", null, 2, 1, 1, 0, 0, 1, 0, 1, null, null, null, null, null, null, null, null, null, null, 0);
Translate(null, 11, 0, 0, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0, null);
SaveKey("cube1.kine.local.posx,cube1.kine.local.posy,cube1.kine.local.posz", 1, null, null, null, true, 2);
Duplicate("cube1", null, 2, 1, 1, 0, 0, 1, 0, 1, null, null, null, null, null, null, null, null, null, null, 0);

Hopefully you should see this:

Inline image 1


Then run this:

ActivateObjectSelTool(null);
SelectObj("cube", null, true);
// Select the first cube and open the TE. Ctrl-A, Ctrl-C
CopyUVW("cube.polymsh.cls.Texture_Coordinates_AUTO.Texture_Projection", "cube.sample[*]");
ActivateObjectSelTool(null);
// Deselect the first cube. Select the other two cubes and open the TE. Ctrl-A, Ctrl-V
SelectObj("cube1", null, true);
ToggleSelection("cube2", null, true);
PasteUVW("cube2.polymsh.cls.Texture_Coordinates_AUTO.Texture_Projection", "cube2.sample[*]", siDefaultPasteUVsMode);
PasteUVW("cube1.polymsh.cls.Texture_Coordinates_AUTO.Texture_Projection", "cube1.sample[*]", siDefaultPasteUVsMode);

...and you should get this:

Inline image 2


Hope that's it...

DAN
image.jpeg
image.jpeg

Grahame Fuller

unread,
Jun 12, 2012, 1:21:29 PM6/12/12
to soft...@listproc.autodesk.com
Duplicate the duplicates again, but this time make sure that your duplicate options are set to always duplicate or freeze projections. Then delete the "original duplicates".

gray

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 06:33 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

...and what do we do if the objects don't have a texture support? (explicit UV)


Matt


From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Grahame Fuller
Sent: Monday, June 11, 2012 3:25 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

If I understand correctly, Get > Property > Texture Projection > Connect to Support, then pick the existing support. You'll also need to make sure that the textures use the correct projection in the render tree.

gray

From: softimag...@listproc.autodesk.com<mailto:softimag...@listproc.autodesk.com> [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 06:01 PM
To: soft...@listproc.autodesk.com<mailto:soft...@listproc.autodesk.com>
Subject: RE: Localizing a shared texture projection

Let me add - without having to resort to using the SDK, which I already know I can do.



From: softimag...@listproc.autodesk.com<mailto:softimag...@listproc.autodesk.com> [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 2:58 PM
To: soft...@listproc.autodesk.com<mailto:soft...@listproc.autodesk.com>
Subject: Localizing a shared texture projection

Have a unique one that pops up from time to time, but one of those things I keep forgetting what the solution is.

One of our environment artists has created a very large scene consisting of 25,000+ objects. Many of which are duplicated from a common source object. By default, when duplicating an object Softimage reuses/shares the texture projection(s) between source and duplicate as a means of efficiency.

The problem is she needs to animate the texture projection's translation on only a few of the duplicates. However, keying any parameter in the Texture Projection Def property causes all objects in the scene (derived from the same source object) to have it's textures animated the same way. We've looked in all the menus, tried freezing projections and so on, but cannot find a way to localize the texture projection to the duplicated object to break the relationship. We have resorted to a workaround of using the copy/paste UV tools in the texture editor - which is OK if we only had to do this for one object. Unfortunately she must do this for many objects and this workaround is quite laborious.
winmail.dat

Dan Yargici

unread,
Jun 12, 2012, 2:08:56 PM6/12/12
to soft...@listproc.autodesk.com
Ahh I see, by "Unfortunately she must do this for many objects" I guess you mean many source objects...  :/


On Tue, Jun 12, 2012 at 12:58 AM, Matt Lind <ml...@carbinestudios.com> wrote:

Matt Lind

unread,
Jun 12, 2012, 4:46:51 PM6/12/12
to soft...@listproc.autodesk.com

Technically that works, but much too laborious as there are many inter-object and intra-object dependencies.  Duplicating objects means we have to set up all the inter-object relationships again too.  Ideally, we need a solution that processes the texture projection in place.

 

I tried using MakeLocal() and SIMakeLocal() from the SDK, but they don’t do the job either.  MakeLocal() throws errors and doesn’t return what it says it’ll return, and SIMakeLocal() doesn’t seem to do anything.

 

I’ll have to script something to replace the texture projections and redo all the relationships.

 

Matt

 

 

 

 

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Grahame Fuller
Sent: Tuesday, June 12, 2012 10:21 AM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

 

Duplicate the duplicates again, but this time make sure that your duplicate options are set to always duplicate or freeze projections. Then delete the “original duplicates”.

 

gray

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 06:33 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

 

…and what do we do if the objects don’t have a texture support?  (explicit UV)

 

 

Matt

 

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Grahame Fuller
Sent: Monday, June 11, 2012 3:25 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

 

If I understand correctly, Get > Property > Texture Projection > Connect to Support, then pick the existing support. You’ll also need to make sure that the textures use the correct projection in the render tree.

 

gray

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 06:01 PM
To: soft...@listproc.autodesk.com
Subject: RE: Localizing a shared texture projection

 

Let me add – without having to resort to using the SDK, which I already know I can do.

 

 

 

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Matt Lind
Sent: Monday, June 11, 2012 2:58 PM
To: soft...@listproc.autodesk.com
Subject: Localizing a shared texture projection

 

Have a unique one that pops up from time to time, but one of those things I keep forgetting what the solution is.

 

One of our environment artists has created a very large scene consisting of 25,000+ objects.  Many of which are duplicated from a common source object.  By default, when duplicating an object Softimage reuses/shares the texture projection(s) between source and duplicate as a means of efficiency.

 

The problem is she needs to animate the texture projection’s translation on only a few of the duplicates.  However, keying any parameter in the Texture Projection Def property causes all objects in the scene (derived from the same source object) to have it’s textures animated the same way.  We’ve looked in all the menus, tried freezing projections and so on, but cannot find a way to localize the texture projection to the duplicated object to break the relationship.  We have resorted to a workaround of using the copy/paste UV tools in the texture editor – which is OK if we only had to do this for one object.  Unfortunately she must do this for many objects and this workaround is quite laborious. 

Matt Lind

unread,
Jun 12, 2012, 4:50:57 PM6/12/12
to soft...@listproc.autodesk.com

She needs to localize the texture projections of the duplicate objects so they don’t ripple back to the source which in turn feeds other duplicates derived from the source.  The problem is there are many relationships between objects and metadata which feeds our game engine.  Duplicating an object will  force her to rebuild the metadata relationships because Softimage doesn’t manage that data.  When you’re talking 25,000+….that’s too much data to workaround with brute force techniques.

 

 

Matt

Reply all
Reply to author
Forward
0 new messages