【问题标题】:Filling a cube (back-face culling algorithm)? [closed]填充立方体(背面剔除算法)? [关闭]
【发布时间】:2018-01-23 04:34:01
【问题描述】:

我想填满我的立方体。我发现了背面剔除算法。你能解释一下它是如何工作的吗?我在向量中有 8 个点:

也许你知道另一种更简单的算法,或者解释一下我应该如何处理背面剔除?

wallX[0] - 点 0;wallX[1] - 点 1;wallX[2] - 图片中的点 2)

拳墙代码:

x1[0]=wallX[1]-wallX[0];
y1[0]=wallY[1]-wallY[0];
z1[0]=wallZ[1]-wallZ[0];

x2[0]=wallX[2]-wallX[0];
y2[0]=wallY[2]-wallY[0];
z2[0]=wallZ[2]-wallZ[0];

x3[0]=0;
y3[0]=0;
z3[0]=1000;

wall1={y2[0]*z1[0]-z2[0]*y1[0], z2[0]*x1[0]-x2[0]*z1[0], x2[0]*y1[0]-y2[0]*x1[0]};
wall1*={X3, Y3, Z3};
if(wall1[2]>0) cout<<"wall is watching"<<endl;

【问题讨论】:

  • 在发帖之前,您是否尝试过自己研究背面剔除??
  • 你用什么来渲染立方体?通常OpenGL或DirectX已经包含了多种剔除算法,你不必自己编写。
  • 我不能使用 OpenGL 或 DirectX,我必须编写算法来填充我的立方体。我必须自己写。

标签: c++ algorithm qt 3d cube


【解决方案1】:

大概,您想将立方体渲染为不透明的实体。

这确实是通过绘制面部来完成的,这样你就可以看到更靠近观察者的面部。

我认为

  • 你有一个多边形绘制算法,
  • 您可以计算颜色/阴影以分配给每个人脸。

您可以使用两种方法:

  • 画家的算法,即从后到前绘制所有面孔。您可以通过在每个面的最近顶点的深度坐标上对面进行排序来实现此目的。这很容易做到,但效率有点低,因为当三个足够时您将绘制六个面。

  • 背面剔除,即忽略其法线向量的深度分量指向后方的面。只是一点点向量演算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多