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;
}

效果预览图:

SDF(Signed-distance-field: 有向距离场)(4): 缩放-旋转-平移(源码和Demo)

SDF(Signed-distance-field: 有向距离场)(4): 缩放-旋转-平移(源码和Demo)

Demo1 的运动轨迹是两个不同参数的球面坐标空间运动轨迹的合