babylonjs 空间坐标转为屏幕坐标

云原生航海家
• 阅读 4629

应用场景:用于标记显示物体属性,如将一个三维坐标动态赋予给div标签。
借鉴threejs原理https://blog.csdn.net/qq_4174...
api文档
https://doc.babylonjs.com/api...
借鉴案例
https://www.babylonjs-playgro...

function ScreenToWorld(point, camera)  
{  
    var viewport = camera.viewport.toGlobal(engine.getRenderWidth(), engine.getRenderHeight());  
  
    return BABYLON.Vector3.Unproject(new BABYLON.Vector3(point.x, point.y, 0), viewport.width, viewport.height, BABYLON.Matrix.Identity(), camera.getViewMatrix(), camera.getProjectionMatrix());  
}  
  
function worldToScreen(point, camera, scene,engine) {
            return BABYLON.Vector3.Project(point,
                BABYLON.Matrix.Identity(),
                scene.getTransformMatrix(),
                camera.viewport.toGlobal(engine.getRenderWidth(), engine.getRenderHeight()));
        }

方法调用

//位置一定是模型的相对空间位置
carScene.registerBeforeRender(function () {
    if(carScene.meshes[37]){
        var pos = worldToScreen(carScene.meshes[37].absolutePosition,
        carScene.activeCamera,carScene,carEngine);

        $('#qundban').removeClass('hide').css({
            'top': pos.y + 'px',
            'left': pos.x + 'px'
        });
    }
})
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
3年前
GoJS API学习
varnode{};node"key""节点Key";node"loc""00";//节点坐标node"text""节点名称";//添加节点通过按钮点击,添加新的节点到画布myDiagram.model.addNodeData(nod
Easter79 Easter79
3年前
Three.js 地理坐标和三维空间坐标的转换
奇技指南本文作者高峰,360奇舞团前端工程师,W3C性能工作组/WOT工作组成员本文转载自奇舞周刊引言在实现3D地球时,球面是通过地理贴图渲染的。所以我们所说的地理坐标和三维空间坐标的转换,是指将地理贴图上的坐标,转换为球面坐标(https://en.wikipedia.org/wiki/Spherical\_coor
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android获得控件在屏幕中的绝对坐标
intlocationnewint2;view.getLocationInWindow(location);//获取在当前窗口内的绝对坐标view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标location0x坐标,location1
Stella981 Stella981
3年前
OpenGL选择与拾取GL_SELECT 附源码
【一个提示】该方法虽然可行但是已经淘汰很多年,建议自行尝试,后面也许会写论文最好的方式是:1\.使用Kdtree组织场景中的物体,以便于快速查找。2\.使用屏幕坐标空间三维坐标的逆矩阵变换,实现选取。在介绍开始,首先给出工程和可执行程序的下载链接:     OpenGL选择和拾取obj模型\_代码及
Wesley13 Wesley13
3年前
Unity中鼠标拖动物体移动的算法
鼠标拖动物移动在游戏设计上用的非常多,像飞机射击游戏,我来分享下我的思路:  我的思路: 因为鼠标的屏幕坐标是二维的,物体是世界坐标,三维的。首先将鼠标的屏幕坐标转换为三维的世界坐标,这样为了计算鼠标与物体位置之间的距离,再将移动后的鼠标的屏幕坐标转换为世界坐标,加上之前的距离量,将和值赋给物体坐标,就可以实现了。C算法实现:IEnumera
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
暗箭伤人 暗箭伤人
1年前
【www.ithunter.club】 20230922下午
不容易的2023年,我们一起努力【www.ithunter.club】(2023092208:00:00.8872062023092216:00:00.887206)1.人事招聘专员数名(可选远程或入职)2.招聘向坐标东京Yahoo、Shift、L
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(