带alpha通道的WPF 3D纹理

带alpha通道的WPF 3D纹理,wpf,xaml,3d,transparency,Wpf,Xaml,3d,Transparency,使用WPF 3D,是否可以使用alpha通道的纹理 我想做一个三维场景,所有的东西都是平面(就像所有的东西都是剪纸)。我认为实现这一点最简单的方法是创建一个平面,将其划分为几个三角形(像一块布),然后应用具有透明背景的纹理。这样,我可以使用相同的几何体,只需交换纹理就可以得到完全不同的形状 我尝试将带有透明背景的PNG作为画笔添加到模型中,但它显示为白色背景。WPF 3D是否提供此功能?怎么做呢?带alpha的纹理在wpf中确实有效(它对我有效!)。 你确定你的png alpha可以吗 在漫射材

使用WPF 3D,是否可以使用alpha通道的纹理

我想做一个三维场景,所有的东西都是平面(就像所有的东西都是剪纸)。我认为实现这一点最简单的方法是创建一个平面,将其划分为几个三角形(像一块布),然后应用具有透明背景的纹理。这样,我可以使用相同的几何体,只需交换纹理就可以得到完全不同的形状


我尝试将带有透明背景的PNG作为画笔添加到模型中,但它显示为白色背景。WPF 3D是否提供此功能?怎么做呢?

带alpha的纹理在wpf中确实有效(它对我有效!)。 你确定你的png alpha可以吗

在漫射材质中添加alpha的png将满足您的所有需求。 这是一块xaml,相机位于两个纹理平面网格上

替换png的路径,将其放入xaml文件并启动。 您应该能够看到material1的alpha后面的material2

<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>

可以将纹理与alpha通道一起使用,尽管WPF不能很好地处理它。我做了和你一样的事,得到了同样的白色背景。这是因为您必须以z顺序显示几何体模型。从下到上

然而,有时不可能按照这样的顺序显示您的模型(我就是这样),我真的希望他们能找到解决方案