【HyperMesh宝典】之空间变换之美(独家美图放送)
又到了HyperMesh宝典时间啦,今天的主题是空间变换,先说说什么是空间变换吧。
度娘是这么说的:坐标变换是空间实体的位置描述,是从一种坐标系统变换到另一种坐标系统的过程,通过建立两个坐标系统之间一一对应关系来实现。
空间变换的操作几乎每天都会用到,比如下面这个“不务正业”的Altair韩国分公司的同事写的俄罗斯方块游戏其实就是不断地使用HyperMesh的平移和旋转功能。
(要在HyperMesh中玩俄罗斯方块可从文末下载压缩包HyperBlock.zip并解压到一个英文目录下,然后从其它目录下拷一个HyperMesh的快捷方式到该目录并双击这个快捷方式就可以开始玩了。使用快捷键是jli和空格进行积木的移动和旋转,但是注意不要在上班时间玩哦)
作为HyperWorks技术人员,方老师出差很多。虽不敢说踏遍祖国万里江山,走过大江南北还是有的。每次出差,方老师都把它当成是一次旅游,只是旅游的前后需要顺便去拜访一下客户。作为一名业余摄影爱好者,经常独自登山远足,不时能见到一些奇妙的风景。
比如前不久去武功山,那天正下大雨,山上渺无人迹,大雾弥漫,不能远观。直到过了1800米海拔线后雨才渐停,露出一望无际的高山草甸。再往上走,终于看到了壮观的风景。
大自然的巧夺天工藏在每一朵花每一片叶子中,就算一张饱含露珠的叶子也有自己的美丽。
局部放大:
咳咳,扯远了,忘了大家不是来看照片的,我们还是继续讨论空间变换中最简单的平移、旋转、缩放吧。
HyperMesh中的3种基本空间变换操作是这样的。
第一种基本空间变换:平移
1. 进入translate面板
2. 选择要平移的对象,这里我们选择elems
如果想保留原始的单元,那么选择单元后,移动前需要复制一份:
3. 结果如下:
第二种基本空间变换:旋转
1. 进入rotate面板
2. 选择要旋转的对象,这里我们选择elems
3. 结果如下:
第三种基本空间变换:缩放
一提起缩放容易让人想起俄罗斯套娃,就用它演示了。
1. 进入scale面板
2. 选择要缩放的对象,这里我们选择elems,下面的node选择是缩放时用的原点
3. 结果如下:
除了这3种基本空间变换,HyperMesh还有3种衍生变换。
第一种衍生变换:镜像
自然界偏爱对称之美,对称的事物容易让人觉得放松和舒服。无论是工程中还是自然界对称都随处可见。
镜像在HyperMesh中叫反射,和mirror是一个意思。
1. 进入reflect面板
2. 选择要镜像的对象,这里我们选择elems
选择单元后,如果希望保存原先的单元,镜像前可以复制一份:
3. 结果如下:
第二种衍生变换:投影
投影是一种降维的变换。
1. 进入project面板
2. 选择要投影的对象,这里我们选择elems
3. 结果如下:
第三种衍生变换:定位
1. 进入position面板
2. 选择要定位的对象,这里我们选择elems
定位的过程可以分成3个步骤:
1. 从原始n1平移到目标n1
2. 通过旋转将原始n1-n2轴线对齐到目标n1-n2轴线
3. 再次绕n1-n2轴线旋转将原始n1-n2-n3平面对齐到目标n1-n2-n3平面
以上内容主要是为了给新同学补课,本讲的精彩内容还在下面部分。
在HyperMesh2017.2中,平移、旋转、缩放、镜像的升级版功能都已经集成在下拉菜单Tools>Transformation Tool中了。
这个工具的优点是可以一次实现多个平移、旋转或缩放,还可以带载荷和坐标系。
前面游玩的事还没有说完,爬山的时候经常能看到各种各样的蜘蛛网,几乎每走过一段路就会见到一个,一不小心还可能撞个满脸满怀。蜘蛛长相虽不咋地,蜘蛛网却有一种复杂而有序的美感。
被雨打湿后更是形态各异,美轮美奂。
放大一点:
再放大一点:
相机焦距所限,没法再放大了。
这些水滴像不像是一种复杂的阵列?方老师本来准备用Evolve做一个类似前面带水滴的蜘蛛网的模型,不过仓促之间只完成了个简陋的替代品。
接下来要做的就是通过移动把苹果的六面体网格移动到各球的球心位置(如果是一串葡萄就更好看了)
虽然HyperMesh并没有直接的功能,但是我们可以很容易地分步实现。
1. 把一个苹果划分成六面体,这里我们直接把第二期用过的苹果拿来了。
2. 在每个球的中心生成一个point(也可以是node,但是由于模型通常有很多别的node,不方便选择,而point除了定位之外一般是没有别的用处的)。这是一个简短的脚本。这里的球可以是体也可以是面,球也可以换成圆柱或者立方体等,都不影响结果。
生成point的脚本如下:
运行效果如下:
3. 把苹果平移到各个位置,这也是一个很简单的脚本(脚本都可以从最后的阅读原文中下载)。
4. 运行结果如下,大家可以看到每个points下面都挂了一个红苹果:
一般而言,在HyperMesh中创建nodes通常比创建points方便,但是从CAD软件创建并导入HyperMesh的只能是points,如果需要将nodes转化为points,可以运行以下脚本:
最后,我们来看一个更有趣的问题:DNA双螺旋结构。
这个问题主要的难点是连接小球的直杆的建模,因为杆的位置和角度都在连续变化,我们只能使用position功能来实现。问题是如果有很多很多的杆时操作会很繁琐,所以我们需要一个自动化的脚本来协助我们。
第一步:我们需要一个划好网格的零件作为参考
第二步:先创建球心的points
结果如下:
考虑到position面板使用的是nodes而不是points,我们需要将points转换为nodes。
运行结果如下:
第三步,将六面体圆柱沿着双螺旋依次放置
一般的position操作需要3点才能定位,由于这里是圆柱,不需要考虑绕自身旋转中心的旋转,我们可以把第三点统一放在一个遥远的地方(只要三点不会共线就可以)。
这个脚本也很短:
运行结果如下,大功告成:
(说明:本文照片都是方老师拍的原片,几何图形是在Evolve中创建的。)