获得圆形opengl立方体的最简单方法是什么

时间:2010-09-12 17:02:45

标签: java opengl rubiks-cube

总是在Java / Opengl中使用lwjgl的Rubik立方体应用程序的上下文中,我想改进我的绘图(http://manuelselva.files.wordpress.com/2010/09/cube.gif),以便为27个小立方体中的每一个创建圆角边缘?我想在最后实现的内容与维基百科立方体图片相同:http://fr.wikipedia.org/wiki/Fichier:Rubik%27s_cube.svg

最简单的解决办法是什么?

3 个答案:

答案 0 :(得分:2)

最简单的方法是在周围的许多3D建模程序中绘制一个圆角立方体模型(例如MayaBlender),并在代码中加载27个模型实例。学习使用像其中一个这样的程序并不是微不足道的,所以即使这是大多数游戏中使用的一般方法,对于这个简单的东西,它可能有点过分 - 可能需要更长的时间来弄清楚如何在程序中完成任何,而不是以不同的方式做事。

显而易见的替代方法是在代码中生成模型。基本的想法很简单,虽然把它们放在一起可能有点不重要。首先选择要用于角落的半径。当您生成面部时,在它们之间留下足够的空间以适合具有该半径的圆的象限(即,每个面结束一个半径短于它们两个将相交的位置)。你用一组顶点坐标/法线连接它们,这些坐标/法线遵循一个圆的象限 - 基本上,写一个小环,以均匀间隔的角度生成几十个点(左右)。每个点的角度都是法线,正弦/余弦将给出坐标。在角落(与边缘相对),您需要在球体上生成点,每个角落都有一个球体的象限。

答案 1 :(得分:0)

一些聪明的纹理和正确制作的法线贴图大多会伪造圆角的外观,而无需编辑模型。最终的渲染将被遮挡,就好像各个边都是圆的一样。

不幸的是,通过这种方法,当边缘观察时,幻觉就会崩溃。

答案 2 :(得分:0)

您还可以使用基本多维数据集并实现细分算法,该算法在每次迭代时将使用的顶点数加倍。然后从立方体的中心到每个顶点创建一个矢量。如果你对顶点进行标准化,你会得到一个球体(在这之间:这是最简单的球体生成算法之一)。但是如果你只改变角落矢量的长度,你将获得一个圆角的立方体。