2009-09-24 6 views
1

Le problème principal est dans LinearGradientBrush. Il remplit le triangle en rouge solide. Qu'est-ce qui ne va pas? J'ai essayé presque le même code avec des formes 2D. Cela a fonctionné parfaitement.Problème WPF 3D Gradientbrush

<Window x:Class="WpfApplication1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="215" Width="336"> 
<Grid Height="146" Width="232"> 
    <Viewport3D Name="myViewPort" ClipToBounds="False"> 
     <Viewport3D.Camera> 
      <PerspectiveCamera x:Name="myCamera" 
           Position="10,10,10" 
           UpDirection="0,1,0" 
           LookDirection="-10,-10,-10" 
           FieldOfView="10"/> 

     </Viewport3D.Camera> 
     <ModelVisual3D> 
      <ModelVisual3D.Content> 
       <GeometryModel3D> 
        <GeometryModel3D.Geometry> 
         <MeshGeometry3D Positions="-1,0,0 0,1,0 1,0,0" TriangleIndices="0,2,1" /> 
        </GeometryModel3D.Geometry> 
        <GeometryModel3D.Material> 
         <DiffuseMaterial> 
          <DiffuseMaterial.Brush> 
           <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
            <GradientStop Color="Black" Offset="0"></GradientStop> 
            <GradientStop Color="Red" Offset="0.6"></GradientStop> 
           </LinearGradientBrush> 
          </DiffuseMaterial.Brush> 
         </DiffuseMaterial> 
        </GeometryModel3D.Material> 
       </GeometryModel3D> 

      </ModelVisual3D.Content> 
     </ModelVisual3D> 
     <ModelVisual3D> 
      <ModelVisual3D.Content> 
       <AmbientLight></AmbientLight> 
      </ModelVisual3D.Content> 
     </ModelVisual3D> 
    </Viewport3D> 

</Grid> 

Répondre

3

Vous devez ajouter à votre TextureCoordinates Géométrie:

<GeometryModel3D.Geometry> 
    <MeshGeometry3D 
     Positions="-1,0,0 0,1,0 1,0,0" 
     TextureCoordinates="0,0 1,0 1,1" 
     TriangleIndices="0,2,1" 
    /> 
</GeometryModel3D.Geometry> 

Une fois que vous faites cela, le matériel sera à la carte les coordonnées de texture appropriée, et vous verrez votre black- > dégradés rouges. À l'heure actuelle, les coordonnées de texture sont toutes par défaut à un point qui est dans la partie «rouge» du gradient.

+0

ça marche! Merci beaucoup! – Overdose