Материалы для 3D объектов - PullRequest
4 голосов
/ 23 марта 2011

Поскольку я играл с поддержкой 3D в WPF, я хотел попробовать разные варианты типов материалов для трехмерных объектов, поэтому сначала я создал простую сцену, состоящую из треугольника (который отображается нормально):

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

Почему это? я должен использовать разные источники света для работы зеркальных или излучающих материалов?

1 Ответ

6 голосов
/ 23 марта 2011

Эмиссионный материал не работает сам по себе, используйте его в сочетании с другими материалами.Как например:

<GeometryModel3D.Material>
  <MaterialGroup>
    <DiffuseMaterial Brush="Black"></DiffuseMaterial>
    <EmissiveMaterial Brush="Yellow" ></EmissiveMaterial>
  </MaterialGroup>
</GeometryModel3D.Material>
...