I think this is not possible with ICE in the current state, but as we
are now able to assign materials to polygon meshes via ICE, why not implement
the same for particles and/or instances?
In my case I have a big simulation containing thousands of planes with a different texture for each one.
At the moment I have a hundred textures and therefore a hundred polygon planes in my scene which I randomly instance.
The perfect idea would be to have just one plane to be instanced and dynamically assign a material via ICE per instance.
I know I can pull a value to the rendertree and perform some texture switching based on that, but with a hundred different materials this becomes too big.
I need a hundred materials that way or another, but it would greatly help
in reducing the object count in the scene.
A side note:
I have to repeat this as often as possible:
The viewport does not display instances as instances properly.
Set the particle shape to rectangle: Perfect speed even with thousands of particles
Instance a single-polygon grid instead: Massive performance drop
If it's just textures, why don't you simply convert your textures as an image sequence (image.01.exr, image.02.exr, etc...), load it as a image sequence in your 1 material and use Self.ShapeInstanceTime to determine which texture gets assigned to which particle?
> I think this is not possible with ICE in the current state, but as we
> are now able to assign materials to polygon meshes via ICE, why not implement
> the same for particles and/or instances?
> In my case I have a big simulation containing thousands of planes with a different texture for each one.
> At the moment I have a hundred textures and therefore a hundred polygon planes in my scene which I randomly instance.
> The perfect idea would be to have just one plane to be instanced and dynamically assign a material via ICE per instance.
> I know I can pull a value to the rendertree and perform some texture switching based on that, but with a hundred different materials this becomes too big.
> I need a hundred materials that way or another, but it would greatly help
> in reducing the object count in the scene.
> A side note:
> I have to repeat this as often as possible:
> The viewport does not display instances as instances properly.
> Set the particle shape to rectangle: Perfect speed even with thousands of particles
> Instance a single-polygon grid instead: Massive performance drop
Why not follow the process used by the new crowd system and generate a
single mesh with thousands of clones (rather than instances)? You should be
able to control material assignment per clone, and we've seen demos of huge
crowds with thousands of elements.
On Thursday, July 5, 2012, Leo Quensel wrote:
> Hey guys,
> I think this is not possible with ICE in the current state, but as we
> are now able to assign materials to polygon meshes via ICE, why not
> implement
> the same for particles and/or instances?
> In my case I have a big simulation containing thousands of planes with a
> different texture for each one.
> At the moment I have a hundred textures and therefore a hundred polygon
> planes in my scene which I randomly instance.
> The perfect idea would be to have just one plane to be instanced and
> dynamically assign a material via ICE per instance.
> I know I can pull a value to the rendertree and perform some texture
> switching based on that, but with a hundred different materials this
> becomes too big.
> I need a hundred materials that way or another, but it would greatly help
> in reducing the object count in the scene.
> A side note:
> I have to repeat this as often as possible:
> The viewport does not display instances as instances properly.
> Set the particle shape to rectangle: Perfect speed even with thousands of
> particles
> Instance a single-polygon grid instead: Massive performance drop
On Thursday, July 5, 2012, Mathieu Leclaire wrote:
> If it's just textures, why don't you simply convert your textures as an
> image sequence (image.01.exr, image.02.exr, etc...), load it as a image
> sequence in your 1 material and use Self.ShapeInstanceTime to determine
> which texture gets assigned to which particle?
> -Mathieu
> Leo Quensel wrote:
>> Hey guys,
>> I think this is not possible with ICE in the current state, but as we
>> are now able to assign materials to polygon meshes via ICE, why not
>> implement
>> the same for particles and/or instances?
>> In my case I have a big simulation containing thousands of planes with a
>> different texture for each one.
>> At the moment I have a hundred textures and therefore a hundred polygon
>> planes in my scene which I randomly instance.
>> The perfect idea would be to have just one plane to be instanced and
>> dynamically assign a material via ICE per instance.
>> I know I can pull a value to the rendertree and perform some texture
>> switching based on that, but with a hundred different materials this
>> becomes too big.
>> I need a hundred materials that way or another, but it would greatly help
>> in reducing the object count in the scene.
>> A side note:
>> I have to repeat this as often as possible:
>> The viewport does not display instances as instances properly.
>> Set the particle shape to rectangle: Perfect speed even with thousands of
>> particles
>> Instance a single-polygon grid instead: Massive performance drop
I don't have 2013 yet. It would be nice to simply convert the pointcloud
to a polymesh, but it would have to be exact.
Every de-instanced polymesh would have to be exactly aligned with its instance and have the same materialID as the original point.
And I think the problem here might be getting the data over from a single
particle to a per-polygon ID per instance.
@Mathieu
That seems to be a pretty good idea - will probably work for this
case as it is just textures.
It would be nicer to completely switch the material though.
> Datum: Thu, 5 Jul 2012 17:56:51 +0200
> Von: Vincent Ullmann <vincent.ullm...@googlemail.com>
> An: softim...@listproc.autodesk.com
> Betreff: Re: Dynamically assigning Materials to particles
> I think there is a Sample Szene wich assigns Materials Dynamicly....
> "...\XSI_SAMPLES\Scenes\ICE\MaterialIDs.scn"
> You should have a look there....
> Anonther Solution:
> - Give every particle a Random Integer Value
> - Use this Integer in the Rendertree with a Color-Switch-Node
I tried pulling a random integer into the rendertree and use a
texture_array_switch node. For that I scripted the connection of
the 100 textures to the array node, but no matter what I did, the node
always returned an empty value (the indices were correct and the IDs got
pulled over to the rendertree just fine).
> Datum: Thu, 5 Jul 2012 17:56:51 +0200
> Von: Vincent Ullmann <vincent.ullm...@googlemail.com>
> An: softim...@listproc.autodesk.com
> Betreff: Re: Dynamically assigning Materials to particles
> I think there is a Sample Szene wich assigns Materials Dynamicly....
> "...\XSI_SAMPLES\Scenes\ICE\MaterialIDs.scn"
> You should have a look there....
> Anonther Solution:
> - Give every particle a Random Integer Value
> - Use this Integer in the Rendertree with a Color-Switch-Node