【问题标题】:Create a cube with a 3d mesh, using a 2d array使用 2d 数组创建具有 3d 网格的立方体
【发布时间】:2015-10-31 17:54:06
【问题描述】:

我需要使用使用这些属性的网格创建一个立方体: "包含网格顶点的二维数组。数组的每个条目指定网格的一行的顶点。所有行的数组必须具有相同的长度。必须至少有两行,并且每行必须有至少两个顶点”

如果你想到一个纸做的立方体的表示:

您可以将其视为 2 个网格,即 3 个水平正方形和 3 个垂直网格。但在这种情况下,我必须使用两个网格,而我需要一个。 我不想有重叠,但我找不到解决方案。我发现的最佳选择是用 9 行填充数组。

每行包含两个条目,以这种方式创建立方体的表面。我附上几张图片来解释它用第一行创建的内容,直到我到达重叠点:

我想这个问题没有解决方案,但如果你们有任何想法,我会接受任何建议。

(对于可能不准确的顺序,我很抱歉)

var row0 = [];  
x, y, l
x+t, y, l

var row1=[]        
x, y, l+400
x+t, y, l+400

var row2=[]        
x, y+t, l+400
x+t, y+t, l+400

var row3=[]       
x, y+t, l
x+t, y+t, l

var row4=[]         
x, y, l
x+t, y, l

var row5=[]      
x+t, y, l
x+t, y+t, l

var row6=[]         
x+t, y, l+400
x+t, y+t, l+400

var row7=[]       
x, y+t, l
x, y, l

var row8=[]
x, y+t, l+400
x, y, l+400

使用“x,y”两个距离为 400 的随机坐标。“t”作为变量。 而“l+40”0表示到“l”的高度距离。

Source here

【问题讨论】:

    标签: arrays opengl 3d mesh


    【解决方案1】:

    你完全想多了这个问题。

    让我们退后一步:在 3D 空间中,每个位置由 3 个值指定;在笛卡尔坐标系中,通常称为 X、Y 和 Z。

    我们通常将它们写成一行标量值:

    x, y, z
    

    一个立方体由 6 个面组成,每个面由 4 个点组成,其中每个点的位置由 3 个面共享。假设一个立方体,其中心在原点,宽度为 2,那么 XY 平面中的两个面将是

    -1, -1, -1
     1, -1, -1
     1,  1, -1
    -1,  1, -1
     1, -1,  1
    -1, -1,  1
    -1,  1,  1
     1,  1,  1
     …
    

    还有 4 个面(两个在 XZ 中,两个在 YZ 中)来组成一个完整的立方体。 (对于您的问题)真正重要的是,如何写下这些值。看看我写的数字。你看到了什么?一个二维数字数组(一行 3 个数字),组成立方体网格的每个点对应一行。就这些了。

    网格就是这样一个顶点列表。不要认为它是“纸做的可折叠网”。只是职位列表,您还可以在其中复制职位。您也可以只记下 8 个位置,然后使用第二个 1D 数组,该数组是如何从这些位置制作网格的列表。

    【讨论】:

    • 谢谢你的回答,我明白你的解释,虽然我没有得到关于如何连接网格的部分。假设我有 8 个点,即立方体的顶点。目前我需要连接它们,理论上,如果我有能力的话,一切都会正常工作。我的问题现在仍然存在于从数学理论到 Javascript API 的过程中,因为我必须使用原始帖子中提到的 API,因此我无法使用一维数组来连接这些点,至少我认为就像这个,我不知道怎么做。
    • @GabrielePrestifilippo:为每个点分配一个从 0 到 8 的索引。然后构建这些索引的一维数组,总共 6*4 = 24 个元素,如下所示:{0, 1, 2, 3, 2, 5, 6, 3, ...} 等等。通过将这个数组加载到 GL_ELEMENT_ARRAY_BUFFER 缓冲区对象中,您可以将此数组传递给 glDrawElements 的索引参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多