从菱形十二面体说起:法线和布尔运算
菱形十二面体,即十二个面均为菱形的一种多面体。1865年由比利时数学家Eugène Charles Catalan(欧仁·查理·卡塔兰)最先描述,因此也是卡塔兰立体中的一种,如图1所示。在空间点群理论中,这一立体属于Oh群。它能够独立地铺满整个三维空间。
图1. 菱形十二面体(图片来自wikipedia)
下面是其展开面,它是由12个全等的菱形构成,其中菱形的钝角为109.47°,锐角70.53°,长对角线/短对角线/边长=
图2. 菱形十二面体之面的展开图(图片来自wikipedia)
也许跟晶体学相关的软件里面能够直接调出这样一个立体模型,如果这样你就满足了的话,请无视以下内容。因为我要说的3ds MAX软件,在扩展基本体选项里面只有五个基本的三维空间正多面体,外加几个无关痛痒的星形多面体而已。
那菱形十二面体怎么用3ds MAX画出来呢?以下是我的思路:
第一步:盯着图1看三分钟,分析结果如下
分析1:菱形十二面体有两种顶点,A和B。其中,A类顶点有6个,每个与4个B顶点相连;B类顶点有8个,每个与3个A顶点相连。
分析2:6个A顶点可以看成两个交错的正三角形(如图);8个B顶点可以看成两个交错的正四面体(为了不造成大家的视觉错乱,我只标出了其中一个)。
第二步:在3dsMAX软件中出两个交错的正四面体
注意:创建完之后需要调整下坐标系,然后镜像一下就ok。
第三步:补上另外两个正三角形(为了图省事,我直接复制并镜像了了一下,于是出现了下图中的模型)
至此,A顶点和B顶点全部归到正确位置,下面开始连线。
第四步:连接顶点
这时候,菱形十二面体的形状已经出来了,剩下的就是将它转为多面体。记得连线的时候打开顶点捕捉就行了。
第五步:创建可编辑多边形
我用的是可编辑平面的分步画法,直接转化的话有些顶点焊接会出问题,导致模型会有缺陷。
对新手来说,第四步大多会出问题。所以,如果对样条线编辑不熟悉的话,在连接顶点时,可以打开顶点捕捉(主工具栏中磁铁旁边一个3的图标,鼠标左键点击即可;右键点击可以选择捕捉点的类型,一般默认为顶点),然后用线条分别绘制上下底面各三个封闭的菱形,转为可编辑多边形,选中其中一个后点参数面板中的附加(Attach),然后依次点击另外五个菱形,使其成为一个整体。如下左图所示。
这时候是没有毛病的,渲染出来也很正常。但下一步连接边的时候问题就出现了。
选择上下相对应的两条边(按ctrl),在参数面板中点击桥接(Bridge)命令,结果如下——
好像有哪里不对劲?中途选择放弃的3ds MAX玩家最苦恼的事出现了,那就是局面分分钟超出自己的掌控。原因何在?
我们不妨先看一下正确的结果——
问题的关键就在于上下两个面的方向,在3ds MAX软件中用参数“法线”(Normal)来调节。简而言之,就是两个面如果都朝上,法线方向就一致;一上一下则相反。
如何判断一个面的发现方向,很简单,渲染一下就知道了。
从图中可以看出,法线相反的面渲染时消失了。就好比一个盒子,从外向内看是看得到面的,但从内向外看就看不到了。
知道了原因之后,我们在将可编辑多边形附加成一个整体之前,可以先渲染一下,确保上下两个面都是朝向内部。如果没有,选中需要改变方向的面,在参数修改器中找到法线命令,点击添加翻转法线即可。
最后,桥接好对应的边,一个菱形十二面体就画好了。
但故事到这里并没有结束。其实,菱形十二面体还有更为简单的画法。
首先,画一个正八面体,设置半径为任意值(如20),沿z轴旋转45°角。
然后,画一个长为50,宽、高均为20的长方体,中心对齐。
最后,布尔运算求交集,一个菱形十二面体就画好了。
当然,这时候的十二面体并非一个真正的菱形十二面体(见下方三视图),我们需要在长轴方向将其压缩一下(压缩比为
在正确的坐标轴方向压缩70.71%,即可得到最终结果。
虽然两种方法画出来的菱形十二面体看上去一模一样,但第二种方法有投机取巧之嫌。对两者添加晶格化修改器之后便可见分晓,后者无论是格点还是边都有明显的压缩痕迹,这在后续的编辑中显然是个无法弥补的障碍。
由此可见,踏踏实实走好每一步才是最重要的。捷径固然可以提高表观效率,但有些东西,失去了就是失去了。其实,生活又何尝不是如此呢?