0
我想在着色器中创建页面滚动效果。所以我有一个XZ平面点y = 0。现在我假设一个具有R半径和Inf的密室。高度在Y轴上以一定角度旋转时在平面上隐藏。查看图片:页面滚动效果
我希望有一个公式,使纸可以结转在给定的XZ方向的领域。
什么我做的是:
float2 currPoint = gl_Vertex.xz;
float2 normDir = normalize(-1, 0); //direction at which paper will start rolling out.
float cylRadius = 1.f;
float dist = sqrt(normDir.x *vi.x * vi.x + normDir.y *vi.y * vi.y);
float beta = dist/cylRadius;
float3 outPos = 0;
outPos.x = currPoint.x + N.x * cylRadius * sin(beta);
outPos.z = cylRadius * (1 -cos(beta));
outPos.y = currPoint.y + N.y * cylRadius * sin(beta);
但它仅适用于normDir = normalize(-1, 0)
的情况下,在其他情况下,结果并不如预期。
首先,什么球?你在问题中讨论了锥体和圆柱体。此外,你需要曲面细分来完成这个工作,否则你只能排列四边形。我提到,因为你的图表似乎代表使用4分的论文。 –