Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三画布纹理未映射到整个SphereMesh_Javascript_Html_Canvas_Three.js_Html5 Canvas - Fatal编程技术网

Javascript 三画布纹理未映射到整个SphereMesh

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.js,最近我尝试将
元素用作
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
。在使用相同的重画级别声明网格后,是否可以调整网格大小?