gpt4 book ai didi

c++ - 给定一个用三角形镶嵌的面片,如何修改它的新顶点位置?

转载 作者:行者123 更新时间:2023-11-28 04:45:12 27 4
gpt4 key购买 nike

我通过三角形 segmentation 创建了一个 segmentation 平面。我想让每个内部新三角形在 y 轴上上下移动,独立于其他三角形。我想在 TES 或 TCS 中修改他们的 gl_Position 来这样做,但到目前为止我所获得的只是让所有基元同时移动。我怎样才能实现我的目标?

这是镶嵌平面[飞机]:https://ibb.co/jWRjvH ""

这是我的 TCS

#version 450 core

layout (vertices = 3) out;

// Input Block
in VS_OUT{
vec2 UV;
} tcs_in[];

// Output Block
out TCS_OUT{
vec2 UV;
} tcs_out[];


void main()
{


if(gl_InvocationID == 0)
{
gl_TessLevelInner[0] = 10.0;
gl_TessLevelOuter[0] = 10.0;
gl_TessLevelOuter[1] = 10.0;
gl_TessLevelOuter[2] = 10.0;
}
gl_out[gl_InvocationID].gl_Position=gl_in[gl_InvocationID].gl_Position;

tcs_out[gl_InvocationID].UV = tcs_in[gl_InvocationID].UV;
}

这是我的TES

#version 450 core

layout (triangles, equal_spacing, cw) in;

// Input Block
in TCS_OUT{
vec2 UV;
} tes_in[];

// Output Block
out TES_OUT{
vec2 UV;
} tes_out;


void main()
{

gl_Position = (gl_TessCoord.x * gl_in[0].gl_Position +
gl_TessCoord.y * gl_in[1].gl_Position +
gl_TessCoord.z * gl_in[2].gl_Position);


tes_out.UV = gl_TessCoord.x * tes_in[0].UV +
gl_TessCoord.y * tes_in[1].UV +
gl_TessCoord.z * tes_in[2].UV;

}
}

最佳答案

I would like to make each internal new triangle move up and down on the y axis, independently from the others.

你不能那样做。 TES 为 segmentation 图元生成顶点,但它无法控制图元自身。镶嵌生成一个三角形区域,所有三角形相互连接以覆盖 area of the abstract patch .如果你镶嵌一个三角形,你会得到大量相互连接的三角形,并且没有办法让它们独立。

至少,只是曲面 segmentation 是行不通的。您可以使用后 segmentation 几何着色器来实现,它能够作用于独立的图元。

关于c++ - 给定一个用三角形镶嵌的面片,如何修改它的新顶点位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383999/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com