2009-06-03 20 views
4

WPF 3Dでは、アルファチャンネル付きのテクスチャを使用できますか?アルファチャンネル付きWPF 3Dテクスチャ

すべてが平面である(すべてが紙切れのような)3Dシーンを作りたいと思っています。これを実現する最も簡単な方法は、プレーンを作成し、それをかなりの数の三角形(布のようなもの)に分割し、透明な背景のテクスチャを適用することだと思いました。この方法で同じジオメトリを使用し、テクスチャを完全に異なる形状にすることができます。

背景に透明なPNGをモデルにブラシとして追加しようとしましたが、背景が白で表示されました。 WPF 3Dはこの機能を提供しますか?どのようにそれを行うことができますか?

答えて

5

アルファとテクスチャはwpfで動作します(それは私のために働く!)。 あなたのPNGアルファは大丈夫ですか?

あなたが必要とするすべてのDiffuseMaterialにアルファを含むpng ここにxamlのチャンクがあり、2枚のテクスチャ付き平面メッシュ上にカメラがあります。

pngのパスをxamlファイルに置き換えて起動します。 素材1のアルファの後ろにある素材2を見ることができるはずです。

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640.0" Height="480.0" > 
    <Grid.Resources> 
    <MeshGeometry3D x:Key="Mesh" Positions="-4.999,-4.999,0.001 5.001,-4.999,0.001 -4.999,5.001,0.001 5.001,5.001,0.001 " TriangleIndices="2 0 3 1 3 0 " TextureCoordinates="0,0 1,0 0,1 1,1 " /> 

     <DiffuseMaterial x:Key="material1" > 
     <DiffuseMaterial.Brush> 
      <ImageBrush ImageSource="C:\mypng.png" Transform="1,0,0,-1,0,1" /> 
     </DiffuseMaterial.Brush> 
     </DiffuseMaterial> 

     <DiffuseMaterial x:Key="material2" > 
     <DiffuseMaterial.Brush> 
     <ImageBrush ImageSource="C:\image_4.png" Transform="1,0,0,-1,0,1" /> 
     </DiffuseMaterial.Brush> 
     </DiffuseMaterial> 

    </Grid.Resources> 
    <Viewport3D Width="640.0" Height="480.0" > 
    <Viewport3D.Camera> 
     <PerspectiveCamera Position="0,0,20"/> 
    </Viewport3D.Camera> 

    <ModelVisual3D> 
     <ModelVisual3D.Content> 
     <Model3DGroup > 

      <AmbientLight /> 

      <GeometryModel3D Geometry="{StaticResource Mesh}" Material="{StaticResource material2}"> 
      <GeometryModel3D.Transform> 
       <MatrixTransform3D Matrix="1.0,0.0,0.0,0,0.0,1.0,0.0,0,0.0,0.0,1.0,0,0.0,0.0,-5.0,1" /> 
      </GeometryModel3D.Transform> 
      </GeometryModel3D> 

      <GeometryModel3D Geometry="{StaticResource Mesh}" Material="{StaticResource material1}"> 
      <GeometryModel3D.Transform> 
       <MatrixTransform3D Matrix="1.0,0.0,0.0,0,0.0,1.0,0.0,0,0.0,0.0,1.0,0,0.0,0.0,0.0,1" /> 
      </GeometryModel3D.Transform> 
      </GeometryModel3D> 

     </Model3DGroup> 
     </ModelVisual3D.Content> 
    </ModelVisual3D> 
    </Viewport3D> 
</Grid> 
2

アルファチャンネルでテクスチャを使用することはできますが、WPFではうまく処理できません。私はあなたと同じことをして、同じ白い背景を持っていました。これは、ジオメトリモデルをzオーダーで表示する必要があるためです。下から上へ

しかし、実際にはこのような順序でモデルを実際に表示することはできません(これは私の場合です)、実際にはその解決策が出てくることを願っています。

関連する問題