Я очень новичок в этом сообществе. Поскольку я задаю вопрос, если есть что-то, что я утверждаю, что это неправильно, пожалуйста, исправьте меня.
Теперь, к вопросу, я проектирую систему частиц, используя библиотеку Three. js, особенно я использую THREE.Geometry () и управляйте вершиной, используя шейдер. Я хочу, чтобы движение моей частицы было ограничено внутри прямоугольника, что означает, что когда частица пересекает грань бокса, ее новая позиция будет на противоположной стороне этой грани.
Вот как я подхожу к вершине шейдер:
uniform float elapsedTime;
void main() {
gl_PointSize = 3.2;
vec3 pos = position;
pos.y -= elapsedTime*2.1;
if( pos.y < -100.0) {
pos.y = 100.0;
}
gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0 );
}
ellapsedTime отправляется из javascript анимации l oop через униформу. И позиция y каждой вершины будет обновляться в соответствии с временем. В качестве теста я хочу, чтобы если частица была ниже нижней плоскости (y = -100), она переместится в верхнюю плоскость. Это был мой план. И вот результат, после того как все они достигнут дна:
Начало падения
После достижения дна
Итак, что мне здесь не хватает?