我已经通过
创建了圆柱网格网格var tile = BABYLON.MeshBuilder.CreateCylinder("tile-" + i, { tessellation: 6, height: 0.1 }, scene);
然后我有以下事件回调
window.addEventListener("click", function (evt) {
// try to pick an object
var pickResult = scene.pick(evt.clientX, evt.clientY);
if (pickResult.pickedMesh != null){
alert(pickResult.pickedMesh.name)
});
然后mouse-click
tiles
message box
点.babylon
var house;
BABYLON.SceneLoader.ImportMesh("", "../Content/"
, "house.babylon"
, scene
, function (newMeshes)
{ house = newMeshes[0]; });
,并使用正确的图块名称。
当我通过
添加一些新网格(grid
文件内的3D模型)时
cylinder
为了更好的想象,它的纹理由四个不同的网格创建,这些网格放置在mouse-click
个pickResult.pickedMesh
个瓷砖上。
它显示正常,但是当null
过于常常表现得完全忽略时会出现这样的网格,因此pickResult.pickedMesh.name
是5%
或{{1在点I点击时,指向我的导入网格的底层。
大约mouse-clicks
的网格区域与house.parent
正确对应(让我们说在屋顶中间,墙壁中间)。
我尝试过设置一些虚拟(隐藏)mesh
scene.pick(evt.clientX, evt.clientY);
,而不是通过导入网格来创建,但似乎是死胡同。
您是否了解如何强制var video = document.getElementById('video-player');
video.setAttribute('src',"https://myvideo.mp4");
video.addEventListener('ended',function(){
.....
});
尊重网格层次结构并考虑覆盖纹理的所有可见部分?
为了完整起见,我正在处理这个3D模型的中间部分(从那里删除左右房子)。
编辑:演示BabylonJS playground
答案 0 :(得分:2)
你可以尝试改变
var pickResult = scene.pick(evt.clientX, evt.clientY);
到
var pickResult = scene.pick(scene.pointerX, scene.pointerY);
因为evt
对应整页。