SDF(Signed-distance-field: 有向距离场)(4): 缩放-旋转-平移(源码和Demo)
Demo1:http://www.artvily.com/sample?sample=sdfStep08Transform
Demo2:http://www.artvily.com/sample?sample=sdfStep07
Thanks very much: https://www.shadertoy.com/view/4tcGDr
下面是欧拉角形式的旋转代码:
void rotateEuler(float radX,float radY,float radZ, inout vec3 pos) {
// rot y
float c = cos(radY);
float s = sin(radY);
mat3 m3 = mat3(
vec3(c, 0, s),
vec3(0, 1, 0),
vec3(-s, 0, c)
);
pos = m3 * pos;
// rot x
c = cos(radX);
s = sin(radX);
m3[0] = vec3(1, 0, 0);
m3[1] = vec3(0, c, -s);
m3[2] = vec3(0, s, c);
pos = m3 * pos;
// rot z
c = cos(radZ);
s = sin(radZ);
m3[0] = vec3(c, -s, 0);
m3[1] = vec3(s, c, 0);
m3[2] = vec3(0, 0, 1);
pos = m3 * pos;
}
效果预览图:
Demo1 的运动轨迹是两个不同参数的球面坐标空间运动轨迹的合