It would be easier to do this with two separate clouds. If you clone the first 
cloud's points on emission, then the creation order and therefore the point 
indices will be the same so you can use Switch Context. You can set the cloned 
particles' size to 0 if you want to hide them and then "trigger" them some time 
after emission.

Otherwise...

1. Store the ID as a custom attribute, say ParentID, before cloning. This will 
get cloned and establishes a correspondence between parent and child.

2. Clone.

3. Use Build Array from Set to put ParentID into an array. Find the parent's 
ParentID in the array. You should get an array with two indices, the one that 
isn't the parent is the cloned child (safe to say it will be the second one).

4. . Use Build Array from Set again to put the tangents into an array. Use the 
child's index to get the tangent you want.

gray

From: softimage-boun...@listproc.autodesk.com 
[mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Alan Fregtman
Sent: Wednesday, July 17, 2013 9:45 AM
To: XSI Mailing List
Subject: Re: Setting data on a particle based off data from another particle in 
the same cloud

@ Julian & Leonard,
Thank you guys. I will check your scenes and explanations when I get home later.

@Ciaran,
It does, but only so for the particles with strands. Particles without strands 
get filtered out of the logic. So even though I can work out the orientation I 
need from the location StrandPosition's, when I set self.Orientation, it only 
sets it for the strandy particles, not the others. That's my main problem. How 
do I force my set on self.Orientation to be on the original particle IDs?



On Wed, Jul 17, 2013 at 9:28 AM, Ciaran Moloney 
<moloney.cia...@gmail.com<mailto:moloney.cia...@gmail.com>> wrote:
I guess I don't understand the problem....why not do just ID to Location >> 
strand positions ? It's quick and gives you the array you need right away.

On Wed, Jul 17, 2013 at 1:29 PM, Leonard Koch 
<leonardkoch...@gmail.com<mailto:leonardkoch...@gmail.com>> wrote:
Hm somehow my first email didn't get through.
The trick is to turn the per point data into arrays, use a lot of find in array 
nodes and to calculate the direction vector on the strand particles instead of 
trying to get the strand data from them and then calculating it on the other 
particles.
Hope this helps.
Here you can download the scene: 
https://leonard-koch.squarespace.com/s/SeparatingStrandsAndParticlesForAlan.scn
And here is the image of the ice tree used in the scene


On Wed, Jul 17, 2013 at 2:07 PM, Christian Keller 
<chris3...@me.com<mailto:chris3...@me.com>> wrote:
If you clone the points clone the id into a new attribute, then you know which 
particle is the parent. And add a attribute that it's a clone. You can use that 
later to decide not to put orientation values on.
Build a set from you tangent, whatever values and then you can select the 
corresponding value from that set.

I'm not in front of a computer right now, but I'll have a quick look at it if 
you don't get it working.

Chris

--
christian keller
visual effects|direction

m +49 179 69 36 248<tel:%2B49%20179%2069%2036%20248>
f +49 40 386 835 33<tel:%2B49%2040%20386%20835%2033>
chris3...@me.com<mailto:chris3...@me.com>

gesendet von meinem iDing

Am 17.07.2013 um 12:02 schrieb Ciaran Moloney 
<moloney.cia...@gmail.com<mailto:moloney.cia...@gmail.com>>:
Maybe you're not getting the right ID to look up the strandpoints on?

On Wed, Jul 17, 2013 at 2:34 AM, Alan Fregtman 
<alan.fregt...@gmail.com<mailto:alan.fregt...@gmail.com>> wrote:
I thought that too, but it's not cutting it. :(

The "do stuff" part doesn't get any StrandPosition data for the points without 
strands. (Tried both ID to Location & Point Index to Location.)


On Tue, Jul 16, 2013 at 9:27 PM, Ciaran Moloney 
<moloney.cia...@gmail.com<mailto:moloney.cia...@gmail.com>> wrote:
Point ID to location >> get strand positions >> do stuff >> Set Self.Orientation



Ciaran

On Wed, Jul 17, 2013 at 1:54 AM, Alan Fregtman 
<alan.fregt...@gmail.com<mailto:alan.fregt...@gmail.com>> wrote:
Hey guys,

Scratching my head over this...

So, I have two sets of particles. One is emitted then a second particle is born 
(via Clone Point) and this one gets some strand stuff. This one follows the 
original's motion.

I wanna align the first particle to the strands' tangent from the second 
particle. I got this working when it was all with one set of particle, but now 
that I separated them, I'm a little lost with the context.

Getting self.StrandPosition to work out the tangents sets the context to 
per-point and so if I set any data it does it to that original point I read the 
StrandPosition from, therefore I end up affecting my strandy particles, not the 
original.

Any idea how I can get the StrandPosition from the strandy particles and have 
it so when I set the Orientation I do so on the original first set of particles?

Any help appreciated.
Cheers,

   -- Alan







<<attachment: winmail.dat>>

Reply via email to