2010-11-15 24 views
1

La question pourrait être simple, mais je me rends compte que la réponse ne peut pas être. Pour le garder aussi clair que possible. Pouvez-vous expliquer l'idée de base de la technique Volume Ray Casting dans le rendu de volume 3D?Simple volume ray casting

Cheers, Timo

Répondre

3

Cette référence présente une introduction raisonnable de raycasting simples link. Ces concepts (intersections de plan de rayons, etc.) peuvent ensuite être étendus à la coulée de rayons de volume link. Pour résumer, le rayon est coulé à travers le volume et accumule de la couleur à chaque intersection qui répond à certains critères. Par exemple, chaque voxel le long du rayon possédant une valeur> 128 peut contribuer à un faible pourcentage d'opacité pour une couleur RVB souhaitée. Le degré d'opacité est pondéré, (voxel_value - 128)/127 pourrait être une fonction de pondération appropriée dans ce cas simplifié (en supposant que les valeurs négatives sont traitées de manière appropriée). Ce schéma représenterait une fonction de transfert proportionnelle et seuillée. Pour le rendu, on attribue au pixel associé au rayon une couleur déterminée par les opacités sommées rencontrées le long de son trajet. (Il s'agit d'un mélange alpha avant-arrière - d'autres méthodes existent.)

D'autres fonctions de transfert existent également: certaines fonctions peuvent peser lourdement les dégradés. Ce type de fonction peut être utilisé pour visualiser les limites de surface se produisant dans le volume.

Je recommande les livres VTK pour plus de lecture.

1

J'ai écrit les messages couple sur ray-casting et ray-tracing avec Python et VTK dans mon blog (PyScience):

http://pyscience.wordpress.com/2014/09/21/ray-casting-with-python-and-vtk-intersecting-linesrays-with-surface-meshes/

http://pyscience.wordpress.com/2014/10/05/from-ray-casting-to-ray-tracing-with-python-and-vtk/

Cependant, je me rends compte les rayons les techniques ne sont pas particulières au rendu de volume (même si elles peuvent être utilisées comme telles). Pour le rendu de volume pur, la classe vtkVolumeRayCastMapper fait l'affaire (pas encore écrit un post sur ce sujet :))