美文网首页
Houdini 克服恐惧之 | Matrix到底是个什么东西?

Houdini 克服恐惧之 | Matrix到底是个什么东西?

作者: 大师的学徒 | 来源:发表于2020-06-09 08:34 被阅读0次

Rotational Matrix | 旋转矩阵

3*3 Rotate Matrix包含的信息

不管是旋转矩阵还是移动矩阵,首先Matrix本质上只是一个矩阵数组,不管是3x3或者4x4,他们本身只是一个矩阵字符串,如何使用这这个字符串才决定了这些矩阵的性质。

比如我们想借助旋转矩阵来旋转当前点

当前位置和旋转矩阵的积为旋转后的结果 当前位置和唯一矩阵的积即为新位置 ident matrix 创建一个空白矩阵

注:空白矩阵不是0,而是不会改变原属性,可用在创建矩阵上。

<matrix> ident()
Returns the identity matrix for the given matrix type.

// for example
matrix3 m3 = ident();

此时获得的m3矩阵为
| 1, 0, 0 |
| 0, 1, 0 |
| 0, 0, 1 |

Matrix3举个栗子

假设要用matrix对box进行旋转,

//定义一个3*3矩阵
matrix3 rot = ident();
//将旋转参数分别给到代表 x,y,z的三个行列式
rotate(rot, radians(chf("rotx_amount")), {1,0,0});
rotate(rot, radians(chf("roty_amount")), {0,1,0});
rotate(rot, radians(chf("rotz_amount")), {0,0,1});

@P *= rot;

其中radians()可以将值转化为弧度。
矩阵赋值可简写为

rotate(rot, radians(chf("rot_amount")), {1,1,1});

此时获得了一个box的转动,假如我们想让box进行阵列转动,有两个思路
1,对单体进行转动,然后copy到阵列里获得群体转动。这样很直接,但是缺点也很明显,所有点阵里的box旋转都是一致的。

2,对copy的点阵上的每个点进行矩阵修改,这样每个点可以拥有独立的或者随机的旋转方式,cool!

但是,由于之前的matrix3只包含了rotation信息,通过查看primintrisics发现所有点的pivot都在几何体中心,如果想要针对每个点旋转,需要更改pivot属性,或者...直接用Matrix4!

Matrix4的栗子

Matrix4的基本形式是
| 1, 0, 0, 0 |
| 0, 1, 0, 0 |
| 0, 0, 1, 0 |
| 0, 0, 0, 1 |
最后一行是代表位移信息,而最后一列是作为计算补位用。
前三行分别代表了x,y,z的方向和大小,ie. 第一行{1,0,0,0},如果改为{2,0,0,0},则矩阵在x方向上放大两个单位。
另外,此时x,y,z三个方向没有必要正交。
例如用如下矩阵和猪头运算,
| 2, 0, 0, 0 |
| 1, 1, 0, 0 |
| 0, 0, 1, 0 |
| 0, 0, 0, 1 |


猪头在x方向放大两倍,同时y方向变为{1,1,0}方向,所以产生倾斜

定义matrix4的方法有很多,比较常用的是

matrix m = ch4("matrix_M");
//或者
matrix m = ident();

当然可以使用最原始的

matrix m = set(   1,0,0,0,
                          0,1,0,0,
                          0,0,1,0
                          0,0,0,1
)

p@orient也可以做为点的matrix调用方式,参照https://www.sidefx.com/forum/topic/60235/

假设此时我们有一个球体多边形,需要把box复制到每个点上。
通过copy to point完成。


默认设置下,box的up顺着点的法向

在wrangle中修改Y轴转向,借助ptnum作为随机seed,
同时借助ptnum作为pscale的seed来随机化大小。

p@orient = quaternion(chf("rotate_Y")*fit01(rand(@ptnum),1.0,5.0), {0,1,0,0});

@pscale = fit01(rand(@ptnum),0.2,1.5);

这样获得了大小不同且转速不同的复制几何体。


借助点的随机性来创造随机几何体

相关文章

  • Houdini 克服恐惧之 | Matrix到底是个什么东西?

    Rotational Matrix | 旋转矩阵 不管是旋转矩阵还是移动矩阵,首先Matrix本质上只是一个矩阵...

  • 《拖延心理学》我该怎样克服拖延

    总的来说,拖延来源于恐惧,克服拖延就必须直面自己内心的恐惧,上一篇我们分析了拖延的三个根源,在给出克服拖延的方法之...

  • 2017-05-19

    克服内心的恐惧,对未知的恐惧,克服不自信

  • 每日反思

    搭讪就是克服自己的恐惧跟别人的恐惧 如果你克服了自己的恐惧,那么你就能克服对方的恐惧 恐惧的来源于想象,把负面...

  • 克服恐惧

    在每个人的心中都有一个完美的自己,一个理想型的自己。现实的自己和那个理想型的自己差别或大或小,现实的自己与理想的自...

  • 克服恐惧

    最近的瑜伽课程开始学习倒立,从半手倒立到头倒立到手倒立,老师挨个的让我尝试,看看我的核心力量和手臂力量是否足够。可...

  • 克服恐惧

    没错,就是克服内心深处的恐惧。 可能,在别人看来,我是一个坚强,性格开朗的女孩。可是,只有我自己知道,...

  • 克服恐惧

    一伙穷凶极恶的歹徒也是可以被制服的,就因为他们依然是人。——《杀死一只知更鸟》 最大的敌人其实是自己,当自己感到害...

  • 克服恐惧

    今天和大家聊一聊克服恐惧? 每一个人都有害怕的时候。 那么当你感觉到很恐惧,你是如何去解决它,是直接面对还是逃避呢...

  • 克服恐惧

    克里希那穆提曾说过:恐惧源于不确定的外界因素,源于自己狭隘的想法,源于自己知识欠缺。 我们全部的担心,都是还没发生...

网友评论

      本文标题:Houdini 克服恐惧之 | Matrix到底是个什么东西?

      本文链接:https://www.haomeiwen.com/subject/meidtktx.html