2016-10-20 1 views
0

Gibt es einen Ersatz/Ersatz der System.Window.Media.Model3DGroup Klasse in UWP? Überall gesucht und kann keine finden.Gibt es eine äquivalente/Ersetzung der System.Window.Media.Model3DGroup Klasse in UWP?

Dies ist die Probe WPF Code, den ich in UWP replizieren möchten:

 <Model3DGroup.Children> 

      <!-- Group Child 0 --> 

      <Model3DGroup > 
      <Model3DGroup.Transform> 
       <Transform3DGroup> 
       <Transform3DGroup.Children> 
        <Transform3DCollection > 
        <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1" /> 
        <RotateTransform3D > 
         <RotateTransform3D.Rotation > 
         <AxisAngleRotation3D x:Name="myRotate" Axis="1 0 0" Angle="0" /> 
         </RotateTransform3D.Rotation> 
        </RotateTransform3D> 
        <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0" /> 
        </Transform3DCollection> 
       </Transform3DGroup.Children> 
       </Transform3DGroup> 
      </Model3DGroup.Transform> 

      <Model3DGroup.Children> 

           <!-- Child 0 --> 
           <!-- BACK --> 
           <GeometryModel3D Transform="{StaticResource CubeMeshTransform2}"> 
            <GeometryModel3D.Geometry> 
             <MeshGeometry3D 

             TriangleIndices="  0,1,2 
                   3,4,5 " 
             TextureCoordinates=" 1,0  1,1  0,1 
                   0,1  0,0  1,0" 
             Positions="-0.5,-0.5,-0.5 -0.5,0.5,-0.5 0.5,0.5,-0.5  
                0.5,0.5,-0.5 0.5,-0.5,-0.5 -0.5,-0.5,-0.5 
                     " 
            /> 
            </GeometryModel3D.Geometry> 
            <GeometryModel3D.Material> 
             <DiffuseMaterial> 
              <DiffuseMaterial.Brush> 
               <VisualBrush> 
                <VisualBrush.Visual> 
                 <MediaElement Name="media0" IsMuted="True" LoadedBehavior="Manual" MediaEnded="RestartMedia"> 

                 </MediaElement> 
                </VisualBrush.Visual> 
               </VisualBrush> 
              </DiffuseMaterial.Brush> 
             </DiffuseMaterial> 
            </GeometryModel3D.Material> 
           </GeometryModel3D> 
           <!-- Front --> 
           <GeometryModel3D Transform="{StaticResource CubeMeshTransform2}"> 
            <GeometryModel3D.Geometry> 
             <MeshGeometry3D 

             TextureCoordinates="0,1 1,1 1,0 
              1,0 0,0 0,1 
                  " 
             Positions="-0.5,-0.5,0.5  0.5,-0.5,0.5 0.5,0.5,0.5 
                0.5,0.5,0.5  -0.5,0.5,0.5 -0.5,-0.5,0.5 
                     " 
            /> 
            </GeometryModel3D.Geometry> 
            <GeometryModel3D.Material> 
             <DiffuseMaterial> 
              <DiffuseMaterial.Brush> 
               <VisualBrush> 
                <VisualBrush.Visual> 
                 <MediaElement Name="media3" IsMuted="True" LoadedBehavior="Manual" MediaEnded="RestartMedia"> 
                 </MediaElement> 
                </VisualBrush.Visual> 
               </VisualBrush> 
              </DiffuseMaterial.Brush> 
             </DiffuseMaterial> 
            </GeometryModel3D.Material> 
           </GeometryModel3D> 
           <!-- Bottom --> 
           <GeometryModel3D Transform="{StaticResource CubeMeshTransform2}"> 
            <GeometryModel3D.Geometry> 
             <MeshGeometry3D 

             TextureCoordinates="1,1 0,1 0,0 0,0 1,0 1,1 " 
             Positions="-0.5,-0.5,-0.5 0.5,-0.5,-0.5 0.5,-0.5,0.5 0.5,-0.5,0.5 -0.5,-0.5,0.5 -0.5,-0.5,-0.5 
                     " 
            /> 
            </GeometryModel3D.Geometry> 
            <GeometryModel3D.Material> 
             <DiffuseMaterial> 
              <DiffuseMaterial.Brush> 
               <VisualBrush> 
                <VisualBrush.Visual> 
                 <MediaElement IsMuted="True" LoadedBehavior="Manual" MediaEnded="RestartMedia" Name="media4"> 
                 </MediaElement> 
                </VisualBrush.Visual> 
               </VisualBrush> 
              </DiffuseMaterial.Brush> 
             </DiffuseMaterial> 
            </GeometryModel3D.Material> 
           </GeometryModel3D> 
           <!-- Right --> 
           <GeometryModel3D Transform="{StaticResource CubeMeshTransform2}"> 
            <GeometryModel3D.Geometry> 
             <MeshGeometry3D 

             TextureCoordinates="0,1 0,0 1,0 1,0 1,1 0,1" 
             Positions=" 0.5,-0.5,-0.5 0.5,0.5,-0.5 0.5,0.5,0.5 0.5,0.5,0.5 0.5,-0.5,0.5 0.5,-0.5,-0.5 
                     " 
            /> 
            </GeometryModel3D.Geometry> 
            <GeometryModel3D.Material> 
             <DiffuseMaterial> 
              <DiffuseMaterial.Brush> 
               <VisualBrush> 
                <VisualBrush.Visual> 
                 <MediaElement IsMuted="True" Name="media5" LoadedBehavior="Manual" MediaEnded="RestartMedia">  
                  </MediaElement> 
                </VisualBrush.Visual> 
               </VisualBrush> 
              </DiffuseMaterial.Brush> 
             </DiffuseMaterial> 
            </GeometryModel3D.Material> 
           </GeometryModel3D> 
           <!-- Top --> 
           <GeometryModel3D Transform="{StaticResource CubeMeshTransform2}"> 
            <GeometryModel3D.Geometry> 
             <MeshGeometry3D 

             TextureCoordinates=" 0,0 1,0 1,1 1,1 0,1 0,0" 
             Positions=" 0.5,0.5,-0.5 -0.5,0.5,-0.5 -0.5,0.5,0.5 -0.5,0.5,0.5 0.5,0.5,0.5 0.5,0.5,-0.5 
                     " 
            /> 
            </GeometryModel3D.Geometry> 
            <GeometryModel3D.Material> 
             <DiffuseMaterial> 
              <DiffuseMaterial.Brush> 
               <VisualBrush> 
                <VisualBrush.Visual> 
                 <MediaElement IsMuted="True" Name="media6" LoadedBehavior="Manual" MediaEnded="RestartMedia"> 

                 </MediaElement> 
                </VisualBrush.Visual> 
               </VisualBrush> 
              </DiffuseMaterial.Brush> 
             </DiffuseMaterial> 
            </GeometryModel3D.Material> 
           </GeometryModel3D> 
           <!-- left --> 
           <GeometryModel3D Transform="{StaticResource CubeMeshTransform2}"> 
            <GeometryModel3D.Geometry> 
             <MeshGeometry3D 
     TextureCoordinates="1,0 1,1 0,1 0,1 0,0 1,0 " 
     Positions="-0.5,0.5,-0.5 -0.5,-0.5,-0.5 -0.5,-0.5,0.5 -0.5,-0.5,0.5 -0.5,0.5,0.5 -0.5,0.5,-0.5 " /> 
            </GeometryModel3D.Geometry> 
            <GeometryModel3D.Material> 
             <DiffuseMaterial> 
              <DiffuseMaterial.Brush> 
               <VisualBrush> 
                <VisualBrush.Visual> 
                 <MediaElement IsMuted="True" Name="media2" LoadedBehavior="Manual" MediaEnded="RestartMedia"> 

                 </MediaElement> 
                </VisualBrush.Visual> 
               </VisualBrush> 
              </DiffuseMaterial.Brush> 
             </DiffuseMaterial> 
            </GeometryModel3D.Material> 
           </GeometryModel3D> 
          </Model3DGroup.Children> 
      </Model3DGroup> 


      <Model3DGroup> 
      <Model3DGroup.Children> 
       <AmbientLight Color="#ffcccccc"/> 
       <DirectionalLight Color="LightGray" Direction="-1,-1,-1" /> 
      </Model3DGroup.Children> 
      </Model3DGroup> 
     </Model3DGroup.Children> 

Key Sache ist zu beachten, dass es 6 Medienelement Kontrollen() auf jeder Seite des Würfels darstellt.

Antwort

0

Wir können nicht einfach sagen, welche Klasse in uwp äquivalent ist/ersetzen die System.Window.Media.Model3DGroup Klasse in wpf. Model3DGroup in WPF ist für die Verwendung einer Reihe von 3-D-Modellen als eine Einheit. Da ein ModelVisual3D nur einen Model3D haben kann, können wir Model3D-Objekte erstellen, indem wir ein verwenden, um ein einzelnes Modell zu bilden und es als Inhalt des Elements ModelVisual3D festzulegen.

Aber in UWP, Modelvisual3D, Model3D, und auch die Viewport3D sind alle nicht unterstützt. Also brauchen wir nicht die Mode3DGroup Klasse.

Welche Klasse in Ihrer App verwendet werden sollte, hängt von Ihren Anforderungen ab. Z.B. Welche Funktionen möchten Sie implementieren? Zum Beispiel kann eine einfache Demo über Rectangle Rotation in wpf, die die Model3DGroup enthält wie folgt:

<Viewport3D Name="myViewport"> 
    <Viewport3D.Camera> 
       <PerspectiveCamera 
        FarPlaneDistance="20" 
        FieldOfView="45" 
        LookDirection="5,-2,-3" 
        NearPlaneDistance="0" 
        Position="-5,2,3" 
        UpDirection="0,1,0" /> 
      </Viewport3D.Camera> 
    <ModelVisual3D x:Name="topModelVisual3D"> 
     <ModelVisual3D.Children> 
      <ModelVisual3D x:Name="children1"> 
       <ModelVisual3D.Content> 
        <Model3DGroup>       
         <GeometryModel3D Geometry="{StaticResource myTeapot}"> 
          <GeometryModel3D.Material> 
           <DiffuseMaterial> 
            <DiffuseMaterial.Brush> 
             <SolidColorBrush Opacity="1.0" Color="Pink" /> 
            </DiffuseMaterial.Brush> 
           </DiffuseMaterial> 
          </GeometryModel3D.Material> 
          <GeometryModel3D.Transform> 
             <RotateTransform3D> 
              <RotateTransform3D.Rotation> 
               <AxisAngleRotation3D 
               x:Name="myAngleRotation" 
               Angle="1" 
               Axis="0,3,0" /> 
              </RotateTransform3D.Rotation> 
             </RotateTransform3D> 
            </GeometryModel3D.Transform> 
         </GeometryModel3D> 
        </Model3DGroup> 
       </ModelVisual3D.Content> 
      </ModelVisual3D> 
     </ModelVisual3D.Children> 
    </ModelVisual3D> 
    <Viewport3D.Triggers> 
     <EventTrigger RoutedEvent="Viewport3D.Loaded"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation 
         Duration="0:0:10" 
         From="0" 
         RepeatBehavior="Forever" 
         Storyboard.TargetName="myAngleRotation" 
         Storyboard.TargetProperty="Angle" 
         To="360" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Viewport3D.Triggers> 
</Viewport3D> 

Und wir können ähnliche Auswirkungen auf die UWP haben durch folgenden Code.

<Grid x:Name="ImageGrid" Grid.Row="1"> 
    <Grid.Projection> 
     <PlaneProjection /> 
    </Grid.Projection> 
    <Rectangle 
     x:Name="ImageBlock" 
     Width="100" 
     HorizontalAlignment="Center" 
     Fill="Black"   
     Stretch="Uniform" Height="100"> 
     <Rectangle.Triggers> 
      <EventTrigger RoutedEvent="Image.Loaded"> 
       <BeginStoryboard> 
        <Storyboard x:Name="SpinAnimation"> 
         <DoubleAnimation 
          Duration="0:0:5" 
          From="360" 
          RepeatBehavior="Forever" 
          Storyboard.TargetName="ImageGrid" 
          Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" 
          To="0" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Rectangle.Triggers> 
    </Rectangle> 
</Grid> 

Ich denke, die Führer Sie brauchen, sind Draw shapes und Animation in UWP. Für komplexe 3D-Grafiken verweisen Sie bitte auf Direct3D.

+0

Ich frage, ob es eine Möglichkeit gibt, mehrere 3D-Objekte in UWP als ein (wie ein Würfel zum Beispiel) erscheinen zu lassen. – user111

+0

@ user111 was "mehrere 3D Objekte" meinst du hier in uwp? Ein Würfel ist ein 3D-Objekt, oder? uwp hat kein Objekt wie 'GeometryModel3D', könnten Sie bitte Ihre Anforderungen beschreiben? Z.B. Geben Sie ein Beispiel für uwp xaml-Seite mit "multiple 3D objects" show. –

+0

Also im WPF-Beispiel, das ich versuche zu replizieren, ist ein Würfel 6 verschiedene GeometryModel3D-Objekte, die die 6 jeweiligen Seiten des Würfels darstellen. Ich habe meine Frage mit detaillierteren Anforderungen bearbeitet – user111

Verwandte Themen