我使用SVGLoader將SVG圖像加載到BoxBufferGeometry(立方體)的網格基本材質上。我想在用戶懸停/點擊加載在多維數據集特定側的SVG的特定元素時觸發鼠標事件。鼠標事件上每個<g> svg標籤加載在三維材料上
我嘗試在加載之前將事件添加到.svg文件中,但一旦它加載到材質上時,它不會顯示由事件引起的任何更改。
是否有任何其他可能的方式來選擇加載的svg圖像的元素並在其上應用事件?
爲了更好的理解,請參閱http://plnkr.co/edit/YYN8aechHGTKXvPv6tOo?p=preview除了這也嘗試使用下面的代碼訪問特定的一面:
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(scene.children);
if (intersects.length > 0) {
var index = Math.floor(intersects[0].faceIndex/2);
if (INTERSECTED != intersects[ 0 ].object && (index == 4 || index == 5)) {
if (INTERSECTED) {
INTERSECTED.material[intersects[0].faceIndex].color.setHex(INTERSECTED.currentHex);
}
INTERSECTED = intersects[ 0 ].object;
INTERSECTED.currentHex = INTERSECTED.material[4].color.getHex();
INTERSECTED.material[index].color.setHex(0xCACACA);
f = index;
}
我覺得這個鏈接可以幫助你https://stackoverflow.com/questions/12451855/how-to-add-event-listeners-to-objects-in-a-svg – gusaindpk
也很高興在問題中添加一些示例代碼。 – gusaindpk
將SVG作爲紋理應用時,它不再是SVG。如果你想交叉SVG,你需要獲得立方體面上點擊的UV位置(它映射到SVG上的x,y位置),並根據該位置確定哪個SVG標記被點擊。 – TheJim01