我正在使用增强现实应用。
我在这个开源的基础上开发应用程序。 (https://github.com/jeromeetienne/threex.webar/blob/master/examples/basic.html)
在上述开源中,当向相机显示任意数量的标记时,无论标记如何,只有一个图像在其上方增强。在我的场景中,我想让一个标记特定于一个图像,即,每次显示标记时,应该增加特定于该标记的图像。
我编写了以下代码以满足场景要求。
var markerObjects = [];
var images = ['images/cadbury.png','images/kitkat.png','images/gems.png']
for ( i=265,j=0;i<268,j<images.length;i++,j++ ) {
markerObjects.push({id:i,image:images[j],Object3D: new THREE.Object3D()})
}
markerObjects.forEach(function(objects) {
objects.Object3D.visible = false ;
})
detectMarkersStats.begin();
var markers = jsArucoMarker.detectMarkers(domElement)
detectMarkersStats.end();
markers.forEach(function(marker) {
markerObjects.forEach(function(markerObject) {
if( marker.id == markerObject.id ) {
var material = new THREE.SpriteMaterial({
map: THREE.ImageUtils.loadTexture( markerObject.image ),
});
var object3d = new THREE.Sprite(material);
object3d.scale.set( 2, 2, 1 );
markerObject.Object3D.add(object3d);
jsArucoMarker.markerToObject3D(marker, markerObject.Object3D)
scene.add( markerObject.Object3D );
markerObject.Object3D.visible = true;
}
});
});
我面临的问题是,无论何时向相机显示标记,图像都会增强,但当标记从相机中取出时,图像仍保留在场景中。如果显示多个标记,则所有图像都会增强,但所有图像都保留在场景中。我想在从相机上取下标记后从场景中删除这些图像。
你能帮我解决一下吗?