感謝您花時間回答我的問題。當畫布不是全屏時點擊three.js中的對象r74
我真的找不到在r74版本中如何在三個JS中使用raycaster的好例子。
這似乎是很多版本,R55和R76 ......和許多論壇之間變化的談論,並把三個次要版本的例子..
任何人都可以給我們怎樣做榜樣它?
進出口使用的角度和引導的方式
這是我嘗試:
我查看
<div class="col-md-11">
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Title</h3>
</div>
<div class="panel-body" style="padding: 0px">
<div class="canvas-zonas" ng-click="zonas.click($event)">
</div>
</div>
</div>
</div>
</div>
我的CSS(使用手寫筆)
.canvas-zonas
height 67vh
我的控制器
var = mouse = new THREE.Vector3();
var = raycaster = new THREE.Raycaster();
var = canvas = document.querySelector(".canvas-zonas");
function clickObject(event) {
event.preventDefault();
mouse.x= ((event.clientX - canvas.offsetLeft)/canvas.clientWidth) * 2 - 1;
mouse.y=-((event.clientY - canvas.offsetTop)/canvas.clientHeight) * 2 + 1;
mouse.z = 0.5;
raycaster.setFromCamera(mouse, camera);
var intersects = vm.raycaster.intersectObjects(scene.children);
console.info(intersects);
}
所以,當我點擊我的畫布和打印Intersects
變量,有時我得到[]一個空數組即使單擊對象,有時我得到[對象]即使我點擊以外物體。
我想告訴你的傢伙我的相機配置了一點點:
我的相機
var camera = new THREE.PerspectiveCamera(30, canvas.clientWidth/canvas.clientHeight, 0.10, 1000)
camera.position.y = 20;
camera.position.z = 50;
camera.lookAt(scene.position);
camera.updateProjectionMatrix();
這是我的攝像頭的配置,並且還具有記住,我使用WEBGL爲渲染
var renderer = new THREE.WebGLRenderer({antialias: true});
而且,有一點,我有一個resize事件回事:
function listenResize() {
window.bind('resize', function() {
canvas = document.querySelector(".canvas-zonas");
renderer.setSize(canvas.clientWidth, canvas.clientHeight);
camera.aspect = (canvas.clientWidth/canvas.clientHeight);
camera.updateProjectionMatrix();
});
}
最後,我會後發生了什麼事的形象:
圖片1
非常感謝你很多和原諒我的最後一篇文章。我已經更新了!
到目前爲止,您的嘗試是什麼?可以幫助發佈代碼或在codepen.io上創建示例 http://threejs.org/examples/#webgl_interactive_cubes本示例使用最新版本。儘管畫布完整。 – escapedcat
我已經更新了!非常感謝你! –
嘗試http://stackoverflow.com/questions/13542175/three-js-ray-intersect-fails-by-adding-div/13544277#13544277 – WestLangley