2012-10-07 17 views
9

Ho un'applicazione WPF con una finestra principale. In quanto ho una cornice, il contenuto della cornice è una pagina.Oggetto 3D non riprodotto

Ora nella pagina sono 4 viewport3D che contengono Viewport2DVisual3D e in cui ho elemento immagine.

Problema: su alcuni PC la mia applicazione funziona bene ma su alcuni PC la mia applicazione non esegue il rendering di viewport3d o non esegue il rendering del frame. Non so, ma non mostra nulla nella finestra principale.

Il problema si verifica su un laptop Acer Model.

resa: True Image

non fusi: enter image description here

EDIT: Questo problema si è verificato nuovamente quando posi il telaio in una griglia. (Mostro questa pagina in una cornice, quella cornice è il contenuto principale della mia finestra: quando posiziono la cornice in una griglia non mostrava oggetti) Sembra questo sul portatile con grafica condivisa

MODIFICA 2:

<Page x:Class="MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       Loaded="Page_Loaded_1" 
     x:Name="myMainPage" FlowDirection="RightToLeft" > 

    <Page.Resources> 

     <Style TargetType="ContentControl" x:Key="MenuItemsStyle"> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 

         <Viewport3D VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="False"> 
          <Viewport3D.Camera> 
           <PerspectiveCamera x:Name="myCam" FieldOfView="90" Position="{Binding ElementName=myMainWindow, Path=CameraHeight}" NearPlaneDistance="1" FarPlaneDistance="10"/> 
          </Viewport3D.Camera> 

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

          <Viewport2DVisual3D x:Name="V2d3d"> 

           <Viewport2DVisual3D.Transform> 
            <Transform3DGroup> 
             <RotateTransform3D > 
              <RotateTransform3D.Rotation> 
               <AxisAngleRotation3D Axis="0,1,0" Angle="0" x:Name="aar3D"/> 
              </RotateTransform3D.Rotation> 
             </RotateTransform3D> 
            </Transform3DGroup> 
           </Viewport2DVisual3D.Transform> 

           <Viewport2DVisual3D.Material> 
            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> 
           </Viewport2DVisual3D.Material> 
                   <Viewport2DVisual3D.Geometry> 
            <MeshGeometry3D Positions="{Binding ElementName=myMainWindow, Path=MeshPosions}" 
          TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> 
           </Viewport2DVisual3D.Geometry> 
           <Border Name="mainBorder" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
            <Border.Style> 
             <Style TargetType="Border"> 
              <Setter Property="BorderThickness" Value="1.2"/> 
              <Setter Property="Background" > 
               <Setter.Value> 
                <SolidColorBrush Color="Transparent"/> 
               </Setter.Value> 
              </Setter> 
              <Setter Property="BorderBrush" > 
               <Setter.Value> 
                <SolidColorBrush Color="Transparent"/> 
               </Setter.Value> 
              </Setter> 
                       </Style> 
            </Border.Style> 
            <ContentPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
                 Content="{TemplateBinding ContentControl.Content}"> 
             <ContentPresenter.Triggers> 
              <EventTrigger RoutedEvent="ContentPresenter.MouseLeftButtonDown"> 
               // Axis Animation 
              </EventTrigger> 
             </ContentPresenter.Triggers> 
            </ContentPresenter> 
           </Border> 
          </Viewport2DVisual3D> 
         </Viewport3D> 

        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="ContentControl.MouseLeftButtonDown" > 
        //Axis Animation 
       </EventTrigger> 
       <EventTrigger RoutedEvent="ContentControl.MouseEnter"> 
        //ScaleAnimation 
           </EventTrigger> 
       <EventTrigger RoutedEvent="ContentControl.MouseLeave"> 
        //ScaleAnimation 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 

    </Page.Resources> 

    <Page.Triggers> 
     <EventTrigger RoutedEvent="Loaded"> 
      //Load Object Scale And Fade In 
     </EventTrigger> 
    </Page.Triggers> 

    <Grid Name="MainGrid"> 


       <Canvas Name="MainCanvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FlowDirection="LeftToRight"> 
      <ContentControl Opacity="0" Name="MenuItem1" Style="{StaticResource MenuItemsStyle}" 
          MouseDown="MenuItem1_MouseDown" Panel.ZIndex="1" > 
       <Image Source="/IsargaranProject;component/Images/isargari.jpg"/> 
       <ContentControl.RenderTransform> 
        <ScaleTransform ScaleX="0.7" ScaleY="0.7" x:Name="MenuItem1ST"/> 
       </ContentControl.RenderTransform> 
      </ContentControl> 
     </Canvas> 

    </Grid> 
</Page> 
+2

Solo le cose che riesco a ottenere sono le seguenti: 1. Le impostazioni di accelerazione 3D sul laptop devono essere modificate. 2. Viewport2DVisual3D non è installato sul laptop. – WozzeC

+0

Quale versione di WPF stai usando e puoi fornire del codice in modo che possiamo vedere come stai costruendo la vista. – Sam

+0

I Codice aggiunto. Sto usando .net 4. E come installare Viewport2DVisual3D. quale impostazione devo fare? –

risposta

1

Se si utilizza OpenGL o DirectX3D, poi vedere che il computer portatile che non è il rendering, avrà alcuni plugin mancanti come DirectX 3D non sarebbe stato installato o OpenGL si può provare questo due strumenti di rendering 3D per la stesso .. avevo provato questo in passato avevo fatto un programma Graph stava avendo lo stesso problema, ma quando ho installato OPENGL & DirectX3D stava funzionando bene!

+0

Benvenuto in StackOverflow. Quando rispondi alle domande, considera la possibilità di postare link al materiale di riferimento che conferma la tua risposta. Ad esempio potresti citare una pagina Microsoft che afferma che viewport3d si basa su OpenGL e/o Direct3D. – pseudocoder

+0

Scusa ..! in quel momento ero di fretta quindi rispondo velocemente, quindi ho dimenticato di aggiungere un collegamento, ma la prossima volta sono sicuro di aggiungere un collegamento ..! Grazie –

+0

sembra che tu abbia avuto questo problema prima quindi lo voto, ma proverò quest'ultimo quando vedrò di nuovo quel client. –

Problemi correlati