栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

THREE.js Ray Intersect通过添加div失败

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

THREE.js Ray Intersect通过添加div失败

简短的答案是您必须考虑

offset
画布的材质。

长答案取决于代码的编写方式,因此我将给您两个答案,其中应涵盖基础知识。

有很多可能的组合,因此您可能必须进行试验。同样,不同的浏览器可能会采取不同的行动。

假设您的HTML是这样的:

#canvas {    width: 200px;    height: 200px;    margin: 100px;    padding: 0px;    position: static;     top: 100px;    left: 100px;}<body>    <div id="canvas"></body>

您的JS是这样的:

var CANVAS_WIDTH = 200,CANVAS_HEIGHT = 200;var container = document.getElementById( 'canvas' );document.body.appendChild( container );renderer = new THREE.WebGLRenderer();renderer.setSize( CANVAS_WIDTH, CANVAS_HEIGHT );container.appendChild( renderer.domElement );

方法1 为使以下方法正常工作,请将画布位置设置为 static ;边距> 0和padding> 0都可以

mouse.x = ( ( event.clientX - renderer.domElement.offsetLeft ) / renderer.domElement.clientWidth ) * 2 - 1;mouse.y = - ( ( event.clientY - renderer.domElement.offsetTop ) / renderer.domElement.clientHeight ) * 2 + 1;

方法2 对于此替代方法,将画布位置设置为 fixed ;置顶> 0,置左> 0; 填充必须为0;边距> 0可以

mouse.x = ( ( event.clientX - container.offsetLeft ) / container.clientWidth ) * 2 - 1;mouse.y = - ( ( event.clientY - container.offsetTop ) / container.clientHeight ) * 2 + 1;

编辑:小提琴更新为three.js r.84



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号