1
var crateTexture = new THREE.ImageUtils.loadTexture( 'img src="1.jpg' );
var crateMaterial = new THREE.MeshBasicMaterial( { map: crateTexture } );
var cube = new THREE.Mesh( THREE.GeometryUtils.clone(cubeGeometry), crateMaterial );
 cube.position.set(-60, 50, -100);
scene.add(  cube );     

我尝试了以下这个但是是黑色的,并且没有显示我在图片中加载的内容

4

1 回答 1

0

有几件事可能会导致您出现这种情况。

您的第一行应如下所示:

var crateTexture = new THREE.ImageUtils.loadTexture( '1.jpg' );

请注意,我们提供loadTexture的是普通 URL,而不是 HTML 属性。

下一个最可能导致您看不到纹理的原因是您正在从文件系统本地查看页面,而不是通过网络服务器。file://如果您正在从文件系统查看页面(也就是以代替开头的 URL http://),当页面尝试加载纹理时,您将收到错误消息。

在 chrome 中,错误如下所示:

Cross-origin image load denied by Cross-Origin Resource Sharing policy.

您可能看不到纹理的最后一个原因是您没有不断地渲染场景。确保你有某种animate()可以连续渲染场景的功能。

实际上,浏览器需要一瞬间的时间来下载和加载纹理(这是异步发生的),所以如果你只渲染场景一次,你很可能会在图像下载之前渲染它。

我在这里有你的代码的工作版本的现场演示。这是代码的链接

于 2012-10-04T04:24:50.573 回答