javascript - 三个JS : Create Triangle Strip

标签 javascript three.js

我知道这个问题已被多次询问,但我似乎找不到适合我的正确答案。
这是我所在的位置:https://codepen.io/normanwink/pen/VXpbLj

我正在根据窗口大小创建一个网格并将其存储在一个数组中。然后我遍历该数组并尝试创建一些三 Angular 形网格。

const gridSize = 50;

// some other code...

var gridX = Math.ceil(windowX / gridSize);
var gridY = Math.ceil(windowY / gridSize);

// render grid
for (var y = 0; y < gridY; y++) {
    var currentY = y * gridSize;
    grid[y] = [];

    for (var x = 0; x < gridX; x++) {
        var currentX = x * gridSize;
        grid[y].push(new THREE.Vector3(currentX, currentY, Math.random() * 100));
    }
}

// create triangle strip
for (var y = 0; y+1 < grid.length; y++) {
    var current = grid[y];

    for (var x = 0; x+1 < current.length; x++) {
        var arrayPosition = x + y;

        // triangle
        var v1 = grid[y][x];
        var v2 = grid[y+1][x];
        var v3 = grid[y][x+1];

        geom.vertices.push(v1);
        geom.vertices.push(v2);
        geom.vertices.push(v3);

        geom.faces.push( new THREE.Face3( arrayPosition, arrayPosition + 1, arrayPosition +2 ) );

    }
}

var obj = new THREE.Mesh( geom, material );
scene.add(obj);

这段代码应该创建网格。但出于某种原因我想不通,它只是通过第一个 Y 坐标运行而忽略了后面的网格点。

我认为问题出在 create triangle strip 循环中的某处,但我找不到它。有人可以帮忙吗?

谢谢!

最佳答案

我认为你的 var arrayPosition = x + y;是错误的。

我想你想要像 ((y*current.length)+x)*3 这样的东西

关于javascript - 三个JS : Create Triangle Strip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49395301/

相关文章:

javascript - Three.js - 获取鼠标点击的X、Y、Z坐标

javascript - 限制 Three.js 中的帧速率以提高性能,requestAnimationFrame?

javascript - 如何在 Node js 应用程序中执行 jar 文件

javascript - 正则表达式:仅字母数字但如果这是纯数字则不是

javascript - jasmine - 如何在分配给 .bind 的函数和对象方法之间进行相等性比较?

javascript - 创建自定义 .OBJ/.MTL 文件并使用 Three.js 渲染它

three.js - 来自数组的 WebGL 高度图?

javascript - SPA 在在线托管中不起作用

javascript - window.print() 在 IE\Firefox 中不显示相同的打印屏幕 HTML

javascript - Three.JS - 自定义网格上的光线转换