3D模型

时间:2015-04-22 14:04:34

标签: opengl glsl shader vertex vertex-shader

我目前正在为模型编写一个简单的顶点着色器。我想要实现的是这样的:

我有一个龙的模型,没什么太花哨的,我想遮挡翅膀顶点移动一点,以模拟飞行。现在,这是出于学术目的,所以它不必以任何方式完美。

我正在寻找的是,例如如何仅使模型中心的顶点移动?有什么方法可以比较顶点到模型中心的位置,并根据到中心的距离,使它或多或少地移动(使用从OpenGL应用程序发送的时间变量)?

如果没有,是否还有其他适当且相对简单的方法?

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

#version 330 core

in vec3 vertex;

void main() {
    //get the distance from 0,0,0
    float distanceFromCenter = length(vertex);

    //create a simple squiggly wave function
    //you have to change the constant at the end depending
    //on the size of your model
    float distortionAmount = sin(distanceFromCenter / 10.0);

    //the last vector says on which axes to distor, and how much. this example would wiggle on the z-axis
    vec3 distortedPosition = vertex + distortionAmount * vec3(0, 0, 1);

    gl_Position = distortedPosition;  
}

它可能不完美,但它应该开始。