Javascript 三画布纹理未映射到整个SphereMesh
我正在使用THREE.js,最近我尝试将Javascript 三画布纹理未映射到整个SphereMesh,javascript,html,canvas,three.js,html5-canvas,Javascript,Html,Canvas,Three.js,Html5 Canvas,我正在使用THREE.js,最近我尝试将元素用作THREE.Texture。我已经能够成功地将对象映射到网格(最后!),但我注意到纹理的行为有点奇怪。不幸的是,纹理仅位于我的SphereGeometry的底部,而不是环绕它 这是我的实现: config = config || {} // setting up obj for return config.canvas = config.canvas || document.createElement("canvas"); config.cont
元素用作THREE.Texture
。我已经能够成功地将对象映射到网格(最后!),但我注意到纹理的行为有点奇怪。不幸的是,纹理仅位于我的SphereGeometry
的底部,而不是环绕它
这是我的实现:
config = config || {} // setting up obj for return
config.canvas = config.canvas || document.createElement("canvas");
config.context. = config.canvas.getContext("2d");
config.context.font = "Bold 40px Arial";
config.context.fillStyle = "rgba(255, 0, 0, 1)";
config.context.fillText("Hello Stack", 0, 50);
config.texture = new THREE.Texture(config.canvas); // my sphere texture
config.texture.needsUpdate = true;
config.texture.minFilter = THREE.LinearFilter;
config.texture.magFilter = THREE.LinearFilter;
config.texture.format = THREE.RGBFormat;
config.mesh = new THREE.Mesh(
new THREE.SphereGeometry(100, 100, 40),
new THREE.MeshBasicMaterial({color: 0xffaa00, map: config.texture}));
config.mesh.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));
return config.mesh;
编辑:#1我想我应该注意,我尝试使用的canvas元素是动态生成的。它是一个基本
元素,没有指定宽度
或高度
。
编辑:#2我从元素本身获得了一个数据URI。似乎
单元将图像渲染得非常小;这可能是问题的一部分。我不知道该如何补偿。我尝试在DoM元素上进行一些宽度/高度操作。一开始没用,会继续尝试 我一直在尝试这个,我注意到当我没有尝试调整
元素的大小时,纹理贴图实际上很好。真不寻常,;因此,如果您无法手动纠正问题,请让THREE.js引擎映射纹理本身 我认为,纹理将绘制在每个片段上。您有100个宽度段和40个高度段。试着减少它们,如新的三个。SpheregeMetry(100,3,2)
或使用默认值新的三个。SpheregeMetry(100/*,8,6*/)
我正在使用
元素将SpheregeMetry包装成一个倒置的SpheregeMetry
。在使用相同的重画级别声明网格后,是否可以调整网格大小?