Ada*_*rte 4 3d wpf xaml transparency
使用WPF 3D,是否可以使用带alpha通道的纹理?
我想制作一个三维场景,其中一切都是平面(就像一切都是纸张切口).我认为实现这一目标的最简单方法是创建一个平面,将其划分为相当多的三角形(如布料),然后应用具有透明背景的纹理.这样我就可以使用相同的几何体,只需换出纹理即可获得完全不同的形状.
我尝试将具有透明背景的PNG添加到模型作为画笔,但它显示为白色背景.WPF 3D是否提供此功能?怎么做到呢?
小智 5
纹理与alpha确实在wpf中工作(它适用于我!).你确定你的png alpha好吗?
你需要一个在DiffuseMaterial中使用alpha的png.这是一块xaml,带有两个带纹理的平面网格相机.
替换png的路径,将其放入xaml文件并启动.你应该能够看到材料1的alpha后面的材料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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |