Laden...

[erledigt] WPF 3D - Lichtquelle außerhalb vom Trackball

5 Antworten
1,698 Aufrufe
Letzter Beitrag: vor 15 Jahren
[erledigt] WPF 3D - Lichtquelle außerhalb vom Trackball

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