我目前正在为模型编写一个简单的顶点着色器。我想要实现的是这样的:
我有一个龙的模型,没什么太花哨的,我想遮挡翅膀顶点移动一点,以模拟飞行。现在,这是出于学术目的,所以它不必以任何方式完美。
我正在寻找的是,例如如何仅使模型中心的顶点移动?有什么方法可以比较顶点到模型中心的位置,并根据到中心的距离,使它或多或少地移动(使用从OpenGL应用程序发送的时间变量)?
如果没有,是否还有其他适当且相对简单的方法?
答案 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;
}
它可能不完美,但它应该开始。