4

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

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

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

4

2 に答える 2

5

アルファ付きのテクスチャはwpfで機能します(私にとっては機能します!)。pngアルファは大丈夫ですか?

DiffuseMaterialにアルファが含まれるpngは、必要なものすべてです。これは、2つのテクスチャ平面メッシュ上のカメラを備えたxamlのチャンクです。

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>
于 2009-06-19T20:59:00.783 に答える
2

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

ただし、モデルをこのような順序で実際に表示できない場合もあり(これは私の場合です)、その解決策を考え出してくれることを願っています。

于 2011-06-13T14:40:19.423 に答える