使用WPF 3D,是否有可能擁有帶alpha通道的紋理?帶有Alpha通道的WPF 3D紋理
我想做一個3D場景,一切都是平坦的表面(如一切都是剪紙)。我認爲最簡單的方法是創建一個平面,將其分成幾個三角形(如布料),然後應用具有透明背景的紋理。這樣我可以使用相同的幾何圖形,只需交換紋理即可獲得完全不同的形狀。
我嘗試添加一個帶有透明背景的PNG作爲畫筆作爲模型,但它顯示爲白色背景。 WPF 3D是否提供此功能?如何做呢?
使用WPF 3D,是否有可能擁有帶alpha通道的紋理?帶有Alpha通道的WPF 3D紋理
我想做一個3D場景,一切都是平坦的表面(如一切都是剪紙)。我認爲最簡單的方法是創建一個平面,將其分成幾個三角形(如布料),然後應用具有透明背景的紋理。這樣我可以使用相同的幾何圖形,只需交換紋理即可獲得完全不同的形狀。
我嘗試添加一個帶有透明背景的PNG作爲畫筆作爲模型,但它顯示爲白色背景。 WPF 3D是否提供此功能?如何做呢?
帶alpha的紋理在wpf中起作用(它適用於我!)。 你確定你的png alpha是好的嗎?
一個PN與阿凡達在DiffuseMaterial il所有你需要的。 這是一個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>
雖然WPF不能很好地處理它,但可以在Alpha通道中使用紋理。我和你一樣,並獲得了相同的白色背景。這是因爲您必須使用z順序來顯示幾何模型。從下到上。
然而,有時候不可能真正按照這樣的順序顯示你的模型(這是我的情況),我真的希望他們爲此提出解決方案。