当我正在玩WPF的3D支持时,我想为3d对象材质类型尝试不同的选项,所以首先我创建了一个简单的场景,只有一个三角形(渲染正常):
<Viewport3D>
<Viewport3D.Camera>
<PerspectiveCamera Position="-2,2,2" LookDirection="2,-2,-2" UpDirection="0,1,0" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="White" Direction="-1,-1,-1" />
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="-1,0,0 0,1,0 1,0,0" TriangleIndices="0,2,1" />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Yellow" />
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
但是当我将GeometryModel3D.Material更改为另一种材料(例如
)时,似乎不再渲染三角形<SpecularMaterial Brush="Yellow" Color="Yellow" SpecularPower="24" />
或
<EmissiveMaterial Brush="Yellow" ></EmissiveMaterial>
为什么?我应该使用不同的灯光使镜面反光材料或发光材料起作用吗?
答案 0 :(得分:6)
发光材料本身不起作用,与其他材料结合使用。例如:
<GeometryModel3D.Material>
<MaterialGroup>
<DiffuseMaterial Brush="Black"></DiffuseMaterial>
<EmissiveMaterial Brush="Yellow" ></EmissiveMaterial>
</MaterialGroup>
</GeometryModel3D.Material>