Hola. Perdona, es que he estado últimamente con este proyecto tan liado que, puf. Muchas gracias spor responder. Ahora que ya entregué el trabajo sigo investigando por mi cuenta y he hecho un script algo más corto. Parece que funciona bien, no pilla las partículas profesional orden, sino que lo hace por númeor de vecinos. El problema es que tarda horas para un solo step.
Est empieza a hacer que me plante dudas sobre cómo funcionan las listas en Real Flow. Si la creo en simulationstep creo que cada step vuelve a mirar todas las partcículas para buscar cual eliminar. Yo creo que debe haber alguna forma de crear la lista al inicio, con toda la información de las partículas y luego cada step ir obteniéndolas y borrándolas de esta lista.
En realflowforum tengo unos hilos abiertos con mis avances y uno con lo que entregué al final.
Código:
#-.
# function: onsimulationbegin.
#-.
Def onsimulationbegin():
Emitter = scene, getemitter(v).
Letra = scene, getobject(extrude Nurbs 0_1).
Particle = emitter, getfirstparticle ().
While (particle):
Particle, freeze ().
Particle = particle, getnextparticle ().
#-.
# function: onsimulationstep.
#-.
Def onsimulationstep():
Emitter=scene, getemitter(v).
Foam=scene, getemitter(foam).
Removelist = [].
Particles = emitter, getparticles().
For particle in particles:
#particlenext = particle, getnextparticle ().
Pues = particle, getposition().
Vel = particle, getvelocity().
Neighbors = particle, getneighbors(1/(10*(1000(1/3)))+0.02).
Scene, message (str(len(neighbors))).
Threshold = 38.
If (len(neighbors) < threshold):
Pues = particle, getposition().
Vel = particle, setvelocity(0).
Id = particle, getid().
Removelist, append(particle, getid()).
#emitter, removeparticle (particle, getid()).
Foam, addparticle (pos, el).
If (len(removelist) > 0):
For I in range (len(removelist)):
Emitter, removeparticle (removelist[i]).
Intento conseguir algo como este:
General Melt test.
Luego si me sale bien intentaré añadirle erosión por las partículas que caen.