相关疑难解决方法(0)

THREE.js生成UV坐标

我正在使用THREE.js OBJ加载器将模型导入场景.

我知道我可以很好地导入几何体,因为当我为它指定一个MeshNormalMaterial时,它显示出很棒的效果.但是,如果我使用任何需要UV坐标的东西,它会给我错误:

[.WebGLRenderingContext]GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 1 
Run Code Online (Sandbox Code Playgroud)

我知道这是因为加载的OBJ没有UV坐标,但我想知道是否有任何方法可以生成所需的纹理坐标.我试过了

material.needsUpdate = true;
geometry.uvsNeedUpdate = true;
geometry.buffersNeedUpdate = true;
Run Code Online (Sandbox Code Playgroud)

......但无济于事.

有没有办法使用three.js自动生成UV纹理,还是我必须自己分配坐标?

javascript geometry texture-mapping uv-mapping three.js

30
推荐指数
4
解决办法
3万
查看次数

Three.js立方体与每张脸上的不同纹理

我正在尝试在每个面上创建一个具有不同纹理的three.js立方体.

基本上是一个骰子.这是在我的沙盒环境中,所以应该只在每侧产生一个带有骰子图像(1-6)的旋转立方体.完成后,我打算将其用于浏览器基础游戏.这个例子我只在Chrome中测试过,虽然考虑将其更改为画布渲染器以获得额外的浏览器支持.

在这里看了几个关于SO和其他大量谷歌搜索的问题,尽管我得到了答案(实际上看起来相当简单),但我根本无法让它发挥作用.

我是three.js的新手,但不是JavaScript.

我用来参考的页面是

SO - 在每张脸上都有不同纹理的three.js立方体

SO - 具有不同纹理面的three.js立方体

evanz - 测试three.js立方体

enriquemorenotent.com - three.js在每个面上构建一个具有不同材质的立方体

我的守则

var camera, scene, renderer, dice;

init();
animate();

function init() {
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
    camera.position.set(110, 110, 250);
    camera.lookAt(scene.position);
    scene.add(camera);


    var materials = [
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-1-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-2-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-3-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-4-hi.png')
       }),
       new THREE.MeshLambertMaterial({ …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

29
推荐指数
1
解决办法
3万
查看次数

数学上产生球形六边形网格

我正在尝试创建一个类似于此的形状,具有12个五边形的六边形,任意大小.

https://i.stack.imgur.com/F35J0.png

(图片来源)

唯一的问题是,我完全不知道生成它需要什么样的代码!

目标是能够在3D空间中获取一个点并将其转换为网格上的位置坐标,反之亦然,并获取网格位置并获取绘制网格的相关顶点.

我甚至不知道如何为此存储网格位置.3个五边形之间的每个"三部分"是否都有自己的2D坐标?

我很可能会使用C#,但我更感兴趣的是使用哪种算法以及它们如何工作的解释,而不是只给我一段代码的人.

algorithm geometry tiling hexagonal-tiles computational-geometry

9
推荐指数
3
解决办法
5692
查看次数