C++ 搅拌机:不可能的立方体

C++ 搅拌机:不可能的立方体,c++,graphics,transparency,blender,raytracing,C++,Graphics,Transparency,Blender,Raytracing,我正在做一个图形项目,试图在3D中创建一个不可能的立方体。不可能的立方体如下所示: 这背后的诀窍是两个边缘被“切割”,并从特定角度拍摄一张照片,以产生不可能的错觉。 嗯,我正在尝试制作这个,但不是一个静态图像,我希望能够动画它(旋转)保持不可能的属性 我成功地在搅拌机中制作了一个立方体,如下面的屏幕截图所示: 我想听听你对如何达到预期效果的建议。一个想法是使后面有一条(或多条)边的边部分透明,以便每次摄影机角度改变时,透明面片都会移动 它不必只在Blender中完成,因此欢迎使用OpenG

我正在做一个图形项目,试图在3D中创建一个不可能的立方体。不可能的立方体如下所示:

这背后的诀窍是两个边缘被“切割”,并从特定角度拍摄一张照片,以产生不可能的错觉。

嗯,我正在尝试制作这个,但不是一个静态图像,我希望能够动画它(旋转)保持不可能的属性

我成功地在搅拌机中制作了一个立方体,如下面的屏幕截图所示:

我想听听你对如何达到预期效果的建议。一个想法是使后面有一条(或多条)边的边部分透明,以便每次摄影机角度改变时,透明面片都会移动

它不必只在Blender中完成,因此欢迎使用OpenGL等任何解决方案

为了让您了解最终结果应该是什么,这里有一个链接指向这样一个示例:


这是不可能的(呵呵)。试着想象旋转立方体,使不可能在前面的位向左移动。一旦它将“穿过”当前最左边的边,“它在前面”和“它在后面”这两个属性就不可能同时实现。

如果启用了边剔除,但禁用了剪裁(深度测试),并按正确的顺序绘制基本体,则应获得无需任何剪切的Escher立方体。这应该相对容易制作动画。

对于Blender不太确定,但在OpenGL中,您可以尝试使用不同的参数对glDepthFunc进行处理,以获得所需的效果。这似乎是一个合理的问题。我不知道最初为什么会被否决。我也在想同样的事情。投票结果在我上传问题后不到一分钟就出现了,所以有人在胡闹。我唯一能说的是,你可能不想在Blender中进行投票(至少不使用Python API)。Blender编辑器的工作方式是,需要更改文件的状态(例如移动顶点坐标或更改透明度),然后才显示文件,因此您必须编写一些非常复杂的代码,在移动相机时执行此操作。或者,如果你想在Blender游戏引擎中使用它,我认为这不会很有趣。这让我们可以选择OpenGL,但我现在想不出一个解决方案。我将保持此线程打开,并请将其分享给可能有任何帮助的人,谢谢阅读描述并观看youtube…看。要么是黄色的顶面在后面的蓝色的正面前面,就像常规立方体几何体应该的那样,要么是蓝色的正面挡住了顶面,就像不可能的立方体几何体挡住了顶面一样。无论你做什么,其中一条规则最终都会被打破。它只在“不可能的立方体”透视图中工作,因为这两个透视图不重叠。@Alexencoret:“观看youtube”什么youtube?你没有链接到视频。请注意,通过该动画,他们巧妙地避免了跨越我指示的两条边。你不能自由旋转这样一个立方体而没有间断。