2 Stimmen

Einfache Kameraanimation hat viel Flackern

Ich bin neu in 3D und Animationen in WPF. Ich habe versucht, eine sehr einfache Szene zu erstellen, die aus einem Boden und 2 Würfeln (na ja, 3D-Rechtecke, rechteckige Prismen, was auch immer das genannt wird). Diese Szene hat eine perspektivische Kamera, die ich versuche, zu animieren (ich möchte im Grunde, dass es um die Szene zu fliegen).

Der Code ist sehr einfach und meines Erachtens zum größten Teil ein guter Ansatz. Nachstehend finden Sie relevante Auszüge und die Beispielprojekt kann hier heruntergeladen werden .

XAML:

    <Viewport3D ClipToBounds="false" IsHitTestVisible="false">
        <!-- Camera -->
        <Viewport3D.Camera>
            <PerspectiveCamera x:Name="ViewportCamera"
                               Position="0 0 20" 
                               LookDirection="40 40 0" 
                               FarPlaneDistance="600" 
                               UpDirection="0 0 1" 
                               NearPlaneDistance="0.01" 
                               FieldOfView="75" />
        </Viewport3D.Camera>
        <!-- Light -->
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <DirectionalLight Direction="1 0.5 1" />
            </ModelVisual3D.Content>
        </ModelVisual3D>
        <ModelVisual3D>
            <!-- Floor -->
            <local:CubeControl Color="Black" Size="300,300,1" Center="0,0,0" />
            <local:CubeControl Color="LightGray" Size="15,25,40" Center="40,40,20" />
            <local:CubeControl Color="LightGray" Size="25,20,60" Center="40,-40,30" />
        </ModelVisual3D>
    </Viewport3D>

VB:

Dim tAnimation As New Vector3DAnimation(ViewportCamera.LookDirection, New Vector3D(40, -40, -20), New Duration(TimeSpan.FromMilliseconds(1000)))
ViewportCamera.BeginAnimation(PerspectiveCamera.LookDirectionProperty, tAnimation)
Dim tAnimation2 As New Point3DAnimation(ViewportCamera.Position, New Point3D(-10, -10, 30), TimeSpan.FromMilliseconds(1000))
ViewportCamera.BeginAnimation(PerspectiveCamera.PositionProperty, tAnimation2)

Die Animation läuft wie erwartet, wenn das Fenster sehr klein ist (etwa 320x240). Mit zunehmender Größe des Fensters flackert die Animation und ganze Bilder scheinen übersprungen zu werden, was zu einem weißen Bildschirm führt. In einem großen Fenster (1920x1080) ist die Animation fast überhaupt nicht zu sehen (es ist alles leer, bis die Kamera auf ihre neue Position eingestellt wird).

Irgendwie scheint es sehr ähnlich zu sein wie dieses Problem aber das hat mir nicht geholfen.

Dies ist eine sehr einfache Animation und ich kann nicht glauben, dass WPF kein Problem hat, dies zu tun, so dass ich denke, ich mache etwas falsch.

Kann mir jemand helfen, herauszufinden, warum? Ich habe mehr als genug Zeit darauf verwendet.

Vielen Dank im Voraus!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X