Frage

<Window x:Class="Viewport2DVisual3DExample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Button on 3D"  
    WindowStyle="None"
    Background="{x:Null}"
    Foreground="{x:Null}"
    AllowsTransparency="True"
    >

    <Viewport3D>
        <Viewport3D.Camera>
            <PerspectiveCamera Position="0, 0, 4"/>
        </Viewport3D.Camera>

        <!-- Front -->
        <Viewport2DVisual3D>
            <!-- Give the plane a slight rotation -->
            <Viewport2DVisual3D.Transform>
                <RotateTransform3D>
                    <RotateTransform3D.Rotation>
                        <AxisAngleRotation3D x:Name="frontTransform" Angle="0" Axis="0, 1, 0" />
                    </RotateTransform3D.Rotation>
                </RotateTransform3D>
            </Viewport2DVisual3D.Transform>

            <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D -->
            <Viewport2DVisual3D.Geometry>
                <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
                                TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
            </Viewport2DVisual3D.Geometry>

            <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
            </Viewport2DVisual3D.Material>

            <!-- Here Here Here Here Here  -->
            <Image Source="i:\\tempa\\tm.png" Width="534" Height="458" />

    </Viewport2DVisual3D>

        <!-- Back -->
        <Viewport2DVisual3D>
            <!-- Give the plane a slight rotation -->
            <Viewport2DVisual3D.Transform>
                <RotateTransform3D >
                    <RotateTransform3D.Rotation>
                        <AxisAngleRotation3D x:Name="backTransform" Angle="180" Axis="0, 1, 0" />
                    </RotateTransform3D.Rotation>
                </RotateTransform3D>
            </Viewport2DVisual3D.Transform>

            <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D -->
            <Viewport2DVisual3D.Geometry>
                <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
                                TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
            </Viewport2DVisual3D.Geometry>

            <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
            </Viewport2DVisual3D.Material>

            <Button Name="btnBack">Back</Button>
        </Viewport2DVisual3D>

        <ModelVisual3D>
            <ModelVisual3D.Content>
                <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
            </ModelVisual3D.Content>
        </ModelVisual3D>

    </Viewport3D>

Ich versuche, ein 2-Seitenfenster mit Viewport3D zu bauen. Aber dann hatte ich einige Probleme über Größe.

                <!-- Here Here Here Here Here  -->
            <Image Source="i:\\tempa\\tm.png" Width="534" Height="458" />

Ich möchte dieses Bild genau die gleiche Größe wie sein Quellbild sein.

Weder ein bestimmte Wert oder "auto" funktionieren würde.

Wie kann ich bekommen, was ich will?

War es hilfreich?

Lösung

Mein 3D-Wissen ist begrenzt, und jemand kann dies wahrscheinlich besser beantworten, aber in einer 3D-Umgebung, die Größe eines Objekts ist abhängig von einer Menge Dinge .. Kameraposition, Nah- / Fern-Ebene, die Größe / Position der Objekt, angewendet Transformationen auf das Objekt, die Anzeigengröße, und wahrscheinlich auch andere Sachen, die ich vergessen habe. Das 3D-Engine nimmt die ganze Zeug zu berücksichtigen, wenn Sachen zu machen. Einstellen der Größe des Bildes ist nur ein Teil davon.

Vielleicht mit der Kameraposition versuchen Messing oder eine Scaletransform zu dem Bild hinzugefügt wird.

Andere Tipps

Was Sie suchen ist die Projektionsmatrix der Kamera . Das Matrix verwandelt einen 3D-Punkt in einen 2D-Punkt. So durch die 3D-Koordinaten des MeshGeometry3D vorbei Sie können die 2D-Koordinaten und Größen erfahren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top