02-28-2024, 08:59 AM
Hello.
I am developer of a renderer plugin for 3ds max. For the tyFlow, I prefer to use IParticleObjectExt() interface to get a list of particles with meshes. This works perfectly for simple shapes like sphere and triangle meshes, but I cannot get a list of skinned meshes.
For example, assume skinned fish mesh with 38 bones (skin modifier with 38 bones above a triangle mesh). tyFlow returns array of 39 particles for every fish actor: 38 of them are bone meshes, 1 is empty slot without geometry.
The same scene without "Enable particle interface" in tyFlow main settings is rendered OK.
Mesh** iPOmesh;
ObjectState os = node->EvalWorldState(timeT);
IParticleObjectExt* iPO = GetParticleObjectExtInterface(os.obj);
iPO->UpdateParticles(node, timeT);
int iPOnum = iPO->NumParticles(); // 39 for single fish
for (int j = 0; j < iPOnum; j++)
{
int bi = iPO->GetParticleBornIndex(j);
TimeValue age = iPO->GetParticleAgeByIndex(j);
if (age >= 0)
{
iPOmesh[j] = iPO->GetParticleShapeByIndex(j); // 38 bone meshes and NULL for index #0
INode* mnd = iPO->GetParticleGroup(j); // null
iPOtm[j] = iPO->GetParticleTMByIndex(j);
// ...
}
}
What is going wrong?
I can include the scene, if needed. But it requires the Dali Renderer: Dali Renderer 1.5.53
bug.rar (Size: 1.67 MB / Downloads: 92)
I am developer of a renderer plugin for 3ds max. For the tyFlow, I prefer to use IParticleObjectExt() interface to get a list of particles with meshes. This works perfectly for simple shapes like sphere and triangle meshes, but I cannot get a list of skinned meshes.
For example, assume skinned fish mesh with 38 bones (skin modifier with 38 bones above a triangle mesh). tyFlow returns array of 39 particles for every fish actor: 38 of them are bone meshes, 1 is empty slot without geometry.
The same scene without "Enable particle interface" in tyFlow main settings is rendered OK.
Mesh** iPOmesh;
ObjectState os = node->EvalWorldState(timeT);
IParticleObjectExt* iPO = GetParticleObjectExtInterface(os.obj);
iPO->UpdateParticles(node, timeT);
int iPOnum = iPO->NumParticles(); // 39 for single fish
for (int j = 0; j < iPOnum; j++)
{
int bi = iPO->GetParticleBornIndex(j);
TimeValue age = iPO->GetParticleAgeByIndex(j);
if (age >= 0)
{
iPOmesh[j] = iPO->GetParticleShapeByIndex(j); // 38 bone meshes and NULL for index #0
INode* mnd = iPO->GetParticleGroup(j); // null
iPOtm[j] = iPO->GetParticleTMByIndex(j);
// ...
}
}
What is going wrong?
I can include the scene, if needed. But it requires the Dali Renderer: Dali Renderer 1.5.53
bug.rar (Size: 1.67 MB / Downloads: 92)