Page 1 of 1

Attributes don't work in render tree

Posted: 20 Oct 2016, 23:31
by Victorcg
Hi all. I've goty strange bug in 2015. I can't assign any attribute in render tree (scalar, vector ...) Only available option is use default value. Anybody knows anything about this?

Re: Attributes don't work in render tree

Posted: 21 Oct 2016, 10:53
by Victorcg
What I want is to share scalar attribute from ICE tree to all materials. But for now I can only share it to material, that belongs to object with ICE tree.

Re: Attributes don't work in render tree

Posted: 21 Oct 2016, 11:06
by NNois
Are you forcing the evaluation of your attributes ?
You need to do that before using them anywhere you whant...
Please refere to the doc, that's well explained

Code: Select all

Beware of ICE Optimizations

If you try to set data but never use it anywhere in the scene, it never actually gets set because of how ICE is optimized. This applies not only to custom attributes, but also to dynamic attributes — for example, if you try to set PointVelocity but don't use a Simulate node to update point positions, then PointVelocity does not get set.
Among other things, this can have the following consequences:
Caches may be missing data that you expect to be there.
If you freeze a tree that initializes data before creating another tree that uses that data, the data will be missing.
The ICEAttribute.IsDefined property of the SDK is sometimes misleading.
You can force data to be evaluated and set in a couple of ways:
Display the data values in the viewport. See Displaying Port Values.
Use the data to set real data in the scene, for example, set weight map values or use the data in the render tree.
Plus now with the attribute editor you can force them by a single clic

Re: Attributes don't work in render tree

Posted: 21 Oct 2016, 15:39
by Victorcg
Thank You! This also may be issue, but another problem is that I want some global attributes, but as I understood I can set up attribute only for specific object.

Re: Attributes don't work in render tree

Posted: 21 Oct 2016, 17:00
by NNois
but as I understood I can set up attribute only for specific object
1. you can do that by emitting a single particle with an instance of the object you want to share that attribute.
This was the rendertree can read the attribute from the emitter

or
2. Create an ice tree on the object you want and simply get data from the other