Pregunta

<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>

Estoy tratando de construir una ventana de 2-Side utilizando Viewport3D. Pero entonces tuve algunos problemas sobre el tamaño.

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

Quiero esta imagen sea exactamente el mismo tamaño de la imagen de origen como.

Ni un valor especificado o "auto" funcionaría.

¿Cómo puedo conseguir lo que quiero?

¿Fue útil?

Solución

Mi conocimiento 3d está limitada y probablemente alguien puede responder a esta mejor, pero en un entorno 3D, el tamaño de un objeto depende de muchas cosas .. posición de la cámara, cerca / lejos de avión, el tamaño / ubicación de la objeto, las transformaciones aplicadas a ese objeto, la ventana gráfica tamaño, y probablemente otras cosas que me olvido. El motor 3D lleva todas las cosas en cuenta cuando se representa cosas. Ajustar el tamaño de la imagen es sólo una parte de ella.

Tal vez intente jugar con la posición de la cámara o la adición de un ScaleTransform a la imagen.

Otros consejos

Lo que se busca es la matriz de proyección de la cámara . Esa matriz transforma un punto 3D en un punto 2D. Así que al pasar las coordenadas 3D de la MeshGeometry3D puede averiguar las coordenadas 2D y tamaños.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top