Salut à tous, je cherche un moyen de faire fonctionner TP(Thinking Particles) dans un plugin de type SceneLoaderData.
Quand je fait un merge ça succes mais quand j'ouvre mon doc ça ne fonctionne pas. J'en conclus qu'il s'agit d'un problème de document non chargé et donc de TP non initialisé. Y'a t'il un moyen de corriger ça?
Voici mon script de test :
Code:
import c4d,os,struct
Plugin_ID = 1037278
class mySceneLoader(c4d.plugins.SceneLoaderData):
doc = None
particleSystem = None
particleGroup = None
def createTP(self,name):
self.particleSystem = self.doc.GetParticleSystem()
TPRoot = self.particleSystem.GetRootGroup()
self.particleGroup = self.particleSystem.AllocParticleGroup()
self.particleGroup.SetName(name)
self.particleSystem.SetPGroupHierarchy(TPRoot, self.particleGroup, c4d.TP_INSERT_UNDERFIRST)
c4d.EventAdd()
def createParticle(self,pos):
particle = self.particleSystem.AllocParticle()
self.particleSystem.SetGroup(particle,self.particleGroup)
self.particleSystem.SetPosition(particle,pos)
def Identify(self, node, name, probe, size) :
nom = name.lower()
if not nom.endswith('.pcd') : return False
return True
def Load(self, node, name, doc, filterflags, error, bt) :
self.doc = doc
self.createTP("name")
self.createParticle(name,c4d.Vector(10,10,10))
c4d.EventAdd()
return c4d.FILEERROR_OPEN
if __name__ == "__main__":
c4d.plugins.RegisterSceneLoaderPlugin( id=Plugin_ID,
str="PCD IMPORTER (*.pcd)",
g=mySceneLoader,
info=c4d.PLUGINFLAG_SCENELOADER_MERGEORIGINAL,
description="")
De plus j'ai rajotué le "tag"c4d.PLUGINFLAG_SCENELOADER_MERGEORIGINAL dans le register du plugin du coup logiquement il devrais récupérer les informations du doc en cours et donc les informations TP. Mais non :/
Merci d'avance. Sinon je le ferais avec les particules de bases, vu que mon but est juste de récupérer la position.
Bon en tout cas en merge ça fonctionne nickel voici ce que j'arrive à obtenir en important des points cloud ! (c'est jolie...)