3D对象的材质

mel*_*etz 4 3d wpf material

当我正在玩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>
Run Code Online (Sandbox Code Playgroud)

但是当我将GeometryModel3D.Material更改为另一种材质时,似乎不再呈现三角形

<SpecularMaterial Brush="Yellow" Color="Yellow" SpecularPower="24" />
Run Code Online (Sandbox Code Playgroud)

要么

<EmissiveMaterial Brush="Yellow" ></EmissiveMaterial>
Run Code Online (Sandbox Code Playgroud)

这是为什么?我应该使用不同的灯光使镜面反光材料或发光材料起作用吗?

Fel*_*ano 7

发光材料本身不起作用,与其他材料结合使用.例如:

<GeometryModel3D.Material>
  <MaterialGroup>
    <DiffuseMaterial Brush="Black"></DiffuseMaterial>
    <EmissiveMaterial Brush="Yellow" ></EmissiveMaterial>
  </MaterialGroup>
</GeometryModel3D.Material>
Run Code Online (Sandbox Code Playgroud)