4 Stimmen

Materialien für 3D-Objekte

Als ich mit der 3D-Unterstützung der WPF herumspielte, wollte ich verschiedene Optionen für die Materialtypen der 3D-Objekte ausprobieren, also erstellte ich zunächst eine einfache Szene mit einem Dreieck (das gut gerendert wird):

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

Aber es scheint, dass das Dreieck nicht mehr gerendert wird, wenn ich die GeometryModel3D.Material zu einem anderen Material wie geändert

<SpecularMaterial Brush="Yellow" Color="Yellow" SpecularPower="24" />

または

<EmissiveMaterial Brush="Yellow" ></EmissiveMaterial>

Warum ist das so? Sollte ich verschiedene Lichter für die spiegelnden oder emittierenden Materialien verwenden, um zu funktionieren?

7voto

Felice Pollano Punkte 32046

Emissionsmaterial funktioniert nicht allein, sondern muss in Kombination mit anderen Materialien verwendet werden. Wie zum Beispiel:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X