Анимация непрерывного раскрытия для SCNNode - PullRequest
0 голосов
/ 18 января 2019

Я хотел бы показать кривую в SceneKit, которая непрерывно показывает от начальной точки до конечной точки. Я создал шейдер для него, но по какой-то причине моя кривая остается прозрачной.

Моя идея состояла в том, чтобы передать начальную и конечную точки кривой в шейдер и передать анимированный параметр прогресса, который изменяется от 0 до 1. И в шейдере я проверяю расстояние от текущей точки поверхности и точки, определяемой прогресс и, если он ниже, чем он должен показать (имеется в виду 1,0 альфа для поверхности и 0 в противном случае). Вот моя шейдерная программа:

uniform float progress;
uniform vec3 start;
uniform vec3 end;
#pragma transparent
float ox = end.x-start.x;
float oz = end.z-start.z;
float length = sqrt(ox*ox+oz*oz);
float currentPosition = length * progress;
vec4 mPos = u_inverseModelViewTransform * vec4(_surface.position, 1.0);
float x = end.x-mPos.x;
float z = end.z-mPos.z;
float currentLength = sqrt(x*x+z*z);
if (currentPosition < currentLength)
_surface.transparent.a = 0.0; 
else
_surface.transparent.a = 1.0;

Есть идеи, в чем проблема или как мне достичь вышеупомянутых результатов?

...