很大声周刊-vol.108
June 4, 2023 · View on GitHub
很大声周刊,在这里记录日常工作、生活所见,每周一发布。
画一个圆 - 弧度值问题
在极坐标系下可以通过:
x = sin(theta) * radius;
y = cos(theta) * radius;
这组公式绘制圆形。
图中的点虽然组成了圆形,但是看起来乱乱的。原因在于极坐标中采用的是弧度值单位,循环中 i 代表每次循环的弧度增量,可是目前 i 并不是弧度,需要通过 radians() 转换,这样就可以让点均匀分布在圆形上。
for (let i = 0; i < 360; i++) {
let x = sin(radians(i)) * radius;
let y = cos(radians(i)) * radius;
point(x, y);
}
多数需求应该是需要自定义点数量,那就需要提前做好弧度值转换:
通过这种方式可以用任何趁手的工具绘制圆形:
Blender 几何节点
Houdini Vex
点到线
如果不注意弧度的问题,将点连接成线的时候会出现很奇怪的问题:
P5js
Blender 几何节点
Houdini VEX
有些时候 Bug 会带来奇妙效果,但在只想老老实实画个圆的时候,就会很头疼。
上面三种环境的连线逻辑都是相同的 —— 根据点编号依次连接。
就像开头提到“点看起来乱乱的”,不做弧度值转换的结果是点编号错乱(或者说不是按照希望的样子排列),连线的时候自然也乱起来。
如果是像圆这样的基础图形还好,可能会有其它解决方法,但面对通过点计算方式完成的复杂曲线,千万要留意弧度值的问题啊。
Houdini Engine - Unreal
除了程序化建模之外,在 Houdini 中的物理模拟也可以通过这种方式导入 UE,这里指的是模拟结果的静态导入,已知可以导入动态的是 RBD 模拟,其它的模拟还不清楚。
Houdini 到 UE 的程序化资产 基础使用演示。
Unity 支持直接导入 blender 文件
必须转换第三方项目文件才能将它们用于其他应用程序非常耗时。它也可能不可靠,即使是承诺兼容性的软件产品也是如此。但是使用 Unity 从 Blender 和 Maya 本地导入项目文件很容易。
要将 Blender 资产导入 Unity,请单击 Unity 菜单栏上的资产 > 导入新资产,然后找到并打开您的 .blend 文件。
要在 Unity 中使用 Maya 文件,请单击 Unity 菜单栏上的 Assets > Import New Asset,然后查找并打开 Maya 的 .fbx 文件。
感觉 Unity 导入资产相对麻烦一点,通过 Blender 文件导入会方便很多,相当于在 Blender 做好整合,再拿到 Unity 中。
小白兔白又白