Hallo,
ich versuche gerade die Lichtquelle in außerhalb des Trackballs zu platzieren, damit sich die Lichtquelle nicht mitdreht. Es soll immer von meinem Sichtpunkt (also wenn man so wie die Bildschirm z-Achse) das Licht ausgestrahlt werden, egal wie ich auf die Geometrie schauen. Wie kann ich das realisieren???
Hier der Ausschnitt vom XAML-Code:
<tool:TrackballDecorator x:Name="mainTrackball" DockPanel.Dock="Bottom">
<Viewport3D Name="mainViewport" ClipToBounds="True">
<Viewport3D.Camera>
<OrthographicCamera
LookDirection="0,0,-1"
UpDirection="0,1,0"
NearPlaneDistance="-1000"
FarPlaneDistance="1000"
Position="0,0,100"
/>
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight
Color="White"
Direction="-2,-3,-1" />
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</tool:TrackballDecorator>
Im oben angeführten Code ist das Licht noch innerhalb des Trackballs!
MfG
Tonka
hey,
vllt. hilft Dir das, schonmal mit PointLight versucht ?
da kannst du eine feste Postion mitgeben.
lg.
Hallo,
PointLight bringt auch nix, das wird ebenfalls mitgedreht. Das Problem ist, das der Trackball (von 3DTools) alle ModelVisual3D-Childrens rotiert/zoomt. Noch eine Idee?
Du könntest doch die TrackBall Klasse um ein Attached-Property erweitern welche es ermöglicht bestimmte Elemente von der Transformation auszuschließen.
<DirectionalLight
tools:TrackBall.IgnoreTransform="True"
Color="White"
Direction="-2,-3,-1" />
So würde das dann aussehen wenns fertig ist. Geht natürlich nur wenn 3D-Tools OpenSource ist.
Hallo Lector,
die Idee ist toll. Habs jetzt für meine Zwecke so gelöst, das ich die 3D-Tools (3DTools sind OpenSource - zu finden auf CodePlex) um eine Methode erweitere, das auch alle Klassen mit Light mit transformiert werden. Der Trackball dreht standardmäßig immer nur die Kamera.
Das Attached-Property wäre natürlich die optimale Lösung!
Danke für die Hilfe.
MfG
Tonka