nearClipPlane 和 farClipPlane 在绘制模型时有什么作用?
What does nearClipPlane and farClipPlane do when drawing a model?
在MonoGame中绘制模型时nearClipPlane和farClipPlane有什么作用?
我正在尝试使用朋友在 Blender 中制作的模型进行 3D 绘图。我正在使用从在线教程中提取的一些代码进行绘制,并且效果很好。我只是好奇 nearClipPlane 和 farClipPlane 变量的作用。
private void DrawModel()
{
foreach (var mesh in Basilisk_MFT.Meshes)
{
foreach (BasicEffect basicEffect in mesh.Effects)
{
basicEffect.EnableDefaultLighting();
basicEffect.PreferPerPixelLighting = true;
basicEffect.World = Matrix.Identity;
var cameraUpVector = Vector3.UnitZ;
basicEffect.View = Matrix.CreateLookAt(cameraPosition, cameraLookAtVector, cameraUpVector);
float aspectRatio = graphics.PreferredBackBufferWidth / (float)graphics.PreferredBackBufferHeight;
float fieldOfView = MathHelper.PiOver4;
float nearClipPlane = 1;
float farClipPlane = 200;
basicEffect.Projection = Matrix.CreatePerspectiveFieldOfView(fieldOfView, aspectRatio, nearClipPlane, farClipPlane);
}
mesh.Draw();
}
}
我假设它是 3D space 之类的最小和最大长度,但在调整值后我不确定。
near/far 窗格定义了 zbuffer 的范围(在 0-1 范围内)
几何和像素无论如何在硬件中都是 "rendered" - 但像素将被丢弃,因为它在 zbuffer 范围之外(我不知道它是否像在硬件中那样在技术上解决)
另一个"distance"太大的问题是Z-Fighting。 zbuffer 的 0-1 范围必须覆盖的距离越远,它们之间的差异就越小(在 0-1 范围内),因此浮点精度会导致 z-Fighting(非常近的像素闪烁,他们将 "fight" 作为他们的 z 值)
在MonoGame中绘制模型时nearClipPlane和farClipPlane有什么作用?
我正在尝试使用朋友在 Blender 中制作的模型进行 3D 绘图。我正在使用从在线教程中提取的一些代码进行绘制,并且效果很好。我只是好奇 nearClipPlane 和 farClipPlane 变量的作用。
private void DrawModel()
{
foreach (var mesh in Basilisk_MFT.Meshes)
{
foreach (BasicEffect basicEffect in mesh.Effects)
{
basicEffect.EnableDefaultLighting();
basicEffect.PreferPerPixelLighting = true;
basicEffect.World = Matrix.Identity;
var cameraUpVector = Vector3.UnitZ;
basicEffect.View = Matrix.CreateLookAt(cameraPosition, cameraLookAtVector, cameraUpVector);
float aspectRatio = graphics.PreferredBackBufferWidth / (float)graphics.PreferredBackBufferHeight;
float fieldOfView = MathHelper.PiOver4;
float nearClipPlane = 1;
float farClipPlane = 200;
basicEffect.Projection = Matrix.CreatePerspectiveFieldOfView(fieldOfView, aspectRatio, nearClipPlane, farClipPlane);
}
mesh.Draw();
}
}
我假设它是 3D space 之类的最小和最大长度,但在调整值后我不确定。
near/far 窗格定义了 zbuffer 的范围(在 0-1 范围内)
几何和像素无论如何在硬件中都是 "rendered" - 但像素将被丢弃,因为它在 zbuffer 范围之外(我不知道它是否像在硬件中那样在技术上解决)
另一个"distance"太大的问题是Z-Fighting。 zbuffer 的 0-1 范围必须覆盖的距离越远,它们之间的差异就越小(在 0-1 范围内),因此浮点精度会导致 z-Fighting(非常近的像素闪烁,他们将 "fight" 作为他们的 z 值)