Blenderforum
Frage Partikel Maskieren - Druckversion

+- Blenderforum (https://blender-forum.de/forum)
+-- Forum: Blender Hilfe (https://blender-forum.de/forum/forumdisplay.php?fid=4)
+--- Forum: Support (https://blender-forum.de/forum/forumdisplay.php?fid=5)
+--- Thema: Frage Partikel Maskieren (/showthread.php?tid=225)



Partikel Maskieren - taklause - 19.04.2023

Hallo liebes Forum, 

ich beschäftige mich seit 2 Wochen mit Blender da ich es für die Arbeit brauchen werde. 
Es ist schon gewaltig was das Tool alles kann!

Für ein Projekt sollen tausende Objekte vor der Kamera vorbeifallen. Ich habe versucht mich deshalb
mit dem Partikel System vertraut zu machen. Die Objekte, simple Würfel (im Bild 1) fallen wie gewünscht. 

Mit einem Python Skript kann ich dann den Renderer pro "step" laufen lassen und die Bilder exportieren lassen. 

Nun würde ich auch gerne die einzelnen Partikel maskieren. Da ich die Information ihrer Position im Bild benötige. 

Im Web habe ich gelesen das man einzelne Objekte mithilfe ihrer ID maskieren kann (Bild 2).

Die Frage wäre wie man die Objekte des Partikel Emitter maskieren kann? Gut wäre wenn man pro 
Partikel eine einzigartige Farbe zuordnen könnte. Damit man die einzelnen Partikel danach unterscheiden könnte.

Weiss jemand wie ich das erreichen kann?

Vielen Dank für die Hilfe
Gruss Daniel


RE: Partikel Maskieren - taklause - 19.04.2023

P.S.

Ich habe noch einen anderen Ansatz verfolgt. Nämlich im Shading Node setup kann man mit dem Particle Info Node den
Index weitergeben.

   

Danach kann man im Compositing tab diese verwenden* . 

   

Wenn man das Bild dann rausschreibt, sieht man aber das die kanten der Maskierung nicht scharf abgetrennt sind. 

   

Das ist ein muss falls die Objekte nicht alleine stehen. 

Weiss einer wo hierbei das Problem ist? Ich habe das Projekt noch hinzugefügt.


.blend   segmentation_test.blend (Größe: 1.04 MB / Downloads: 71)

Vielen Dank.


RE: Partikel Maskieren - Faba - 20.04.2023

Das ist nach meinem Verständnis das Antialiasing.

Hilft es dir was wenn du bei den Render Settings > Film > Pixel Filter einen gegen 0 gehenden Wert einträgst?


RE: Partikel Maskieren - taklause - 20.04.2023

(20.04.2023, 09:26 AM)Faba schrieb: Das ist nach meinem Verständnis das Antialiasing.

Hilft es dir was wenn du bei den Render Settings > Film > Pixel Filter einen gegen 0 gehenden Wert einträgst?

Hallo Faba, 

danke für deinen Input, das hat funktioniert. Jedoch sind durch diese Einstellung auch die anderen Bilder (insbesondere das gerenderte) betroffen. 

Gruss Daniel


RE: Partikel Maskieren - taklause - 20.04.2023

Code:
import bpy
from bpy_extras.object_utils import world_to_camera_view

context = bpy.context
dg = context.evaluated_depsgraph_get()
ob = context.object.evaluated_get(dg)

ps = ob.particle_systems.active

scene = bpy.context.scene
cam = bpy.data.objects['Camera']

render = scene.render
res_x = render.resolution_x
res_y = render.resolution_y
print("res_x:{},res_y:{}".format(res_x, res_y))
for particle in ps.particles:
    if particle.is_visible:
        print(particle.location)
        coords_2d = world_to_camera_view(scene, cam, particle.location)
        x = coords_2d[0]
        y = coords_2d[1]
        dist_to_cam = coords_2d[2]
        rnd = lambda i: round(i)
        print("x:{},y:{}".format(rnd(res_x*x),res_y- rnd(res_y*y)))
Nur zur Info. 
Ich konnte nun auch die Position der einzelnen Objekte in der Kamera extrahieren.