Maya for 3D Printing - Rapid Prototyping
In this course we're going to look at something a little different, creating technically accurate 3D printed parts.
# 1 24-06-2003 , 09:27 AM
kbrown's Avatar
Moderator
Join Date: Sep 2002
Location: London, UK
Posts: 3,198

Particle replacing without instancing

Hi,

Does anyone know how to replace particles with some geometry without instancing. I'd like to have each replaced particle as a separate duplicate of an object which could then have their own dynamic (soft-body) secondary movement. I think this is not possible with Maya's particle instancer.


Kari
- My Website
- My IMDB

Do a lot, Fail a lot and Learn a lot!
# 2 24-06-2003 , 03:45 PM
ragecgi's Avatar
Registered User
Join Date: Sep 2002
Location: Minnesota, USA
Posts: 3,709
You might have to do it via mel m8...

Sorry, not in front of Maya right now....

Danny in the mel section might have an idea or two for you regarding that.


Israel "Izzy" Long
Motion and Title Design for Broadcast-Film-DS
izzylong.com
# 3 24-06-2003 , 05:16 PM
kbrown's Avatar
Moderator
Join Date: Sep 2002
Location: London, UK
Posts: 3,198
I already tried to do it with a per particle expression but I encountered a problem. I was thinking of duplicating the geometry in a creation expression, storing the duplicate's name in a per particle custom attribute and then deleting the duplicate when the particle dies. Then it would have been just a matter of moving the geometry in a runtime expression.

The problem is that you can only (?) have per particle custom attributes of float type meaning I can't store the name user added image

Any ideas?

*edit*
Maybe I could rename every duplicate to something that includes the particle's Id in it's name but it wouldn't be fool proof...


Kari
- My Website
- My IMDB

Do a lot, Fail a lot and Learn a lot!

Last edited by kbrown; 24-06-2003 at 05:21 PM.
# 4 25-06-2003 , 12:46 PM
kbrown's Avatar
Moderator
Join Date: Sep 2002
Location: London, UK
Posts: 3,198
Moved. Let's try this here user added image


Kari
- My Website
- My IMDB

Do a lot, Fail a lot and Learn a lot!
# 5 25-06-2003 , 01:13 PM
mtmckinley's Avatar
The Maya Mountain
Join Date: Aug 2002
Location: Seattle, WA
Posts: 8,245
I have no idea.

# 6 25-06-2003 , 06:07 PM
kbrown's Avatar
Moderator
Join Date: Sep 2002
Location: London, UK
Posts: 3,198
Well, I got it working with an ugly hack :p If someone can figure out a more sophisticated method I'd be really appreciated.

Here's what I did:
For the per particle creation expression I wrote:
Code:
string $sDupName = ("dup" + particle1Shape.particleId);
string $sNewObj[] = `duplicate nurbsSphere1`;
rename $sNewObj[0] $sDupName;
In the per particle runtime expression I wrote:
Code:
string $sDupName = ("dup" + particle1Shape.particleId);
if(particle1Shape.age >= particle1Shape.lifespan)
	delete $sDupName;
else
{
	vector $vPos = particle1Shape.position;
	setAttr ($sDupName + ".tx") ($vPos.x);
	setAttr ($sDupName + ".ty") ($vPos.y);
	setAttr ($sDupName + ".tz") ($vPos.z);
}
Finally I wrote an expression that deletes all the duplicates when the animation is at start:
Code:
if(frame == 0)
{
	if(`objExists "dup*"`)
		delete "dup*";
}
As I said earlier, this is not a fool proof method because I'm relying on object names. Works for the purpose I need right now though...


Kari
- My Website
- My IMDB

Do a lot, Fail a lot and Learn a lot!
# 7 25-06-2003 , 06:36 PM
ragecgi's Avatar
Registered User
Join Date: Sep 2002
Location: Minnesota, USA
Posts: 3,709
Great hack m8!

I'll keep looking for another way for you thouser added image


Israel "Izzy" Long
Motion and Title Design for Broadcast-Film-DS
izzylong.com
# 8 05-11-2003 , 07:15 PM
Dann's Avatar
Registered User
Join Date: Feb 2003
Location: Los Angeles
Posts: 695
Quick question... I'm trying to use this trick, but it doesn't seem to use the scale and rotational information that's in my particle system. How could I adapt the following so that the duplicate gets made with the scale and rotational information?

particleShape1.scalePP = rand(.08,.4);
particleShape1.rotPP = rand(0,360);
string $sDupName = ("dup" + particleShape1.particleId);
string $sNewObj[] = `duplicate target_plane`;
rename $sNewObj[0] $sDupName;

Thanks.

figured it out. I should stop posting, because half the time I figure it out before people get a chance to reply.


Last edited by Dann; 05-11-2003 at 08:02 PM.
Posting Rules Forum Rules
You may not post new threads | You may not post replies | You may not post attachments | You may not edit your posts | BB code is On | Smilies are On | [IMG] code is On | HTML code is Off

Similar Threads