Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Frage Partikel Maskieren
#1
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


Angehängte Dateien Thumbnail(s)
       
Zitieren
#2
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: 70)

Vielen Dank.
Zitieren
#3
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?


Angehängte Dateien Thumbnail(s)
   
Zitieren
#4
(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
Zitieren
#5
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.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste