2012-02-23 51 views
1

可见我们已经尝试了下面的代码: three.js所质地不与SVGRenderer

var scene = new THREE.Scene(); 
var camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 0.0001, 999); 
camera.position.set(0, 0, 3); 
scene.add(camera); 

var material = new THREE.MeshBasicMaterial({ color: 0xff0000, wireframe: true }); 

var image = $('#tmp')[0] 

var texture = new THREE.Texture(image); 
texture.needsUpdate = true; 
var img_material = new THREE.MeshBasicMaterial({color: 0x000000, map: texture }); 
var plane_geometry = new THREE.PlaneGeometry(2, 2); 

var imageMesh = new THREE.Mesh(plane_geometry, img_material); 
imageMesh.doubleSided = true; 
scene.add(imageMesh); 

renderer = new THREE.CanvasRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 

$('#container').append(renderer.domElement); 
renderer.render(scene, camera); 

,但是当我们切换到:

renderer = new THREE.SVGRenderer(); 

它停止渲染的纹理在图像的几何形状。有人可以说为什么如此吗?

回答

2

THREE.SVGRenderer不支持纹理。

+0

我仍然怀疑它是否理论上可行。我对SVG并不了解,但它确实支持图像,在浏览器中,这些图像甚至可以是'data:'URI。我不确定他们是否可以变形。 – 2012-07-01 12:46:16

+0

一个想法,可以手动完成或使用自定义渲染器:使用canvas/OGL和SVG渲染器。使用SVG形状将光栅图像“剪切”为每个SVG图形的图像,然后将这些图像包含在另一个带有data:URL的svg组中。 – 2014-12-30 23:07:17