如何在WebGL全景图上做标记heavi

WebGL可以用来做3D效果的全景图呈现,例如故宫的全景图。但有时候我们不仅仅只是呈现全景图,还需要增加互动。故宫里边可以又分了很多区域,例如外朝中路、外朝西路、外朝东路等等。我们需要在3D图上做一些标记表示某个小的区域。当点击这个标记时,界面切换到对应标记区域的全景图。下图是实现此功能的一个小DEMO:

如何实现这样的功能?通过本篇的介绍,我们可以了解到以上交互过程的代码实现方式。这里我先提出几个问题

1).如何获取3D全景图某个地址的3D坐标?

2).如何将获取的地址的3D坐标转换为屏幕上的2D坐标?

3).在旋转3D全景图时,如何让3D坐标对应的2D屏幕坐标跟着移动?

4).如何确认一个标记点是在相机的可视区域?

搞清楚以上问题,全景图的标记功能也就轻而易举了。接下来我们就围绕每个问题来实现功能。

varraycasterCubeMesh;varraycaster=newTHREE.Raycaster();varmouseVector=newTHREE.Vector3();vartags=[];这里需要在document上注册mousemove事件,实时获取鼠标对应的3D坐标。事件代码如下:

鼠标移动时,能够获取到3D坐标了。如何确认这个坐标就是我们需要的?这里还得给docuent注册一个mousedown事件。通过右键点击确认。注册事件如下:

接着代码创建了一个tagElement元素,设置样式和内容。并且附加到WebGL容器中。tagMesh自定义了updateTag函数,里边调用了两个特别重要的函数:toScreenPosition和isOffScreen。这里先不忙介绍updateTag函数。接下来通过介绍这两个函数来回答剩下的问题。

如果熟悉GIS的同学,应该知道什么叫做投影。我们将3D坐标映射到2D坐标的过程就叫做投影。toScreenPosition正是使用投影功能做的转换。函数代码如下:

functiontoScreenPosition(obj,camera){varvector=newTHREE.Vector3();varwidthHalf=0.5*renderer.context.canvas.width;varheightHalf=0.5*renderer.context.canvas.height;obj.updateMatrixWorld();vector.setFromMatrixPosition(obj.matrixWorld);vector.project(camera);vector.x=(vector.x*widthHalf)+widthHalf;vector.y=-(vector.y*heightHalf)+heightHalf;return{x:vector.x,y:vector.y};}widthHalf和heightHalf分别表示canvas容器的宽度和高度的一半。接着更新obj对象的全局坐标。然后把vector的位置指向obj的全局坐标,之后调用viector.project(camera)将vector以相机为参考,转换为2D坐标。但此时的2D坐标是笛卡尔坐标。原点在中间位置,需要转换为屏幕坐标(原点在左上角)。最后返回的即是我们需要的2D坐标了。

之前没有介绍tagMesh的updateTag函数,这里我们再看下该函数:

tagMesh.updateTag=function(){if(isOffScreen(tagMesh,camera)){tagElement.style.display="none";}else{tagElement.style.display="block";varposition=toScreenPosition(tagMesh,camera);tagElement.style.left=position.x+"px";tagElement.style.top=position.y+"px";}}这里只看else中代码,设置元素的display为block,让其可见。然后调用toScreenPosition(tagMesh,camera)获取tagMesh3D对象投影在屏幕上的坐标,所有我们直接设置给tagElement样式的left和top。这只是第一步。如果全景图旋转了,tagElement和tagMesh位置又对应不上了。所有在每次渲染时还得调用该函数去执行更新2D坐标。

functionrender(){controls.update();tags.forEach(function(tagMesh){tagMesh.updateTag();});renderer.render(scene,camera);requestAnimationFrame(render);}上面代码遍历了所有的标记集合,每次渲染都更新一次。以上两个步骤就实现了3D坐标和2D屏幕坐标的联动。

如何只按照以上的介绍来实现功能,会发现一个问题。每添加一个标记,我们在旋转全景图时发现相机的前后都会显示这个标记。这因为2D坐标没有z方向,所以空间上会有两个对称点投影到相同的2D平面上。如何解决?看最后一个问题。

我们知道相机有可视区域,如果一个3D坐标在可视区域内,那么它投影到屏幕上的坐标需要显示。而如果该3D坐标不在相机的可视区域,那么我们就不应该把该点投影到屏幕上。Three.js提供了Frustum对象解决这类问题。我们通过调用isOffScreen函数,判断3D对象是否是离屏的。代码如下:

functionisOffScreen(obj,camera){varfrustum=newTHREE.Frustum();//Frustum用来确定相机的可视区域varcameraViewProjectionMatrix=newTHREE.Matrix4();cameraViewProjectionMatrix.multiplyMatrices(camera.projectionMatrix,camera.matrixWorldInverse);//获取相机的法线frustum.setFromMatrix(cameraViewProjectionMatrix);//设置frustum沿着相机法线方向return!frustum.intersectsObject(obj);}首先创建Frustum对象,然后创建一个4*4矩阵对象。接下来的一行代码把cameraViewProjectMatrix转换为相机的法线矩阵。直接把它设置到frustum对象上。

接着调用frustum.intersectObject函数判断obj是否在frustum的可视区域内。至于内部的实现逻辑,大家可查看Three.js的源代码了解。

以上即是实现全景图标记的核心代码。至于全景图如何创建,可以从我的github上下载源代码查看。地址:

THE END
1.3D全景看故宫如何“择中立宫”3D全景看故宫如何“择中立宫” 新京报 编辑 张春昱 2024-07-27 15:49 动新闻 订阅 相关专题 中轴长歌|北京中轴线申遗成功 相关推荐 视频|北京地铁3号线、12号线明起开通,记者探访 02:46 知道视频 9233阅读 国际丨罗马尼亚一饲养员在老虎笼打扫喂食遭攻击 被老虎咬伤致死 00:34 世面 大雪天老人背孙女http://m.bjnews.com.cn/detail/1722066595129962.html
2.3D全景看故宫如何“择中立宫”的中心中轴线3D全景看故宫如何“择中立宫” 新京报动新闻发布于:北京市2024.07.27 15:49 分享到 这里是北京中轴线的中心——故宫,历时14年修建,迎来送往24位皇帝,历经600余年风雨沧桑。它“择中立宫”,展现了以中为尊、左右对称的原则。它见证了封建王朝转变为现代国家的历史变革。时至今日,故宫仍屹立…https://www.sohu.com/a/796546921_100122419
3.3D全景看故宫如何“择中立宫”3D全景看故宫如何“择中立宫”,故宫,皇帝,中立宫,北京中轴线https://www.163.com/dy/article/J847BD4J0512D3VJ.html
4.故宫全景图(北京故宫)故宫全景图(北京故宫) - 720云VR全景制作网https://www.720yun.com/t/d72jr0kvOO5
5.北京故宫这不是照片,您可以像游戏一样在 北京故宫漫步 明清两代皇家宫殿,世界五大宫殿之一 从您位置到故宫 景区的详细攻略 景区的卫星地图 中国景点三维实景 北京故宫,北京故宫,世界上现存规模最大、保存最为完整的木质结构的古建筑之一,与法国凡尔赛宫 故宫 四川九寨沟,九寨沟以翠海、叠瀑、彩林、雪峰、蓝冰、藏情https://m.meet99.com/shijing/
6.3D全景看故宫如何“择中立宫”这里是北京中轴线的中心——故宫00:00 / 00:00 倍速 当前设备不支持播放 你可以 刷新 试试 70017001.199-584a1187827db6c7b59f0e4a4f25b135 3D全景看故宫如何“择中立宫”这里是北京中轴线的中心——故宫,历时14年修建,迎来送往24位皇帝,历经600余年风雨沧桑。展开 2024-07-29 09:45 发布于北京|46 观看 0 评论 收藏 分享 手机看 https://view.inews.qq.com/k/20240729V01RQ000
7.故宫地图卫星地图位置在哪里这是故宫地图网页,提供中国北京市故宫卫星地图高清版、电子地图全图,包括有三维3D实景、全景地图,可以查看到故宫地理位置在哪里、位于北京市什么位置,了解其地形图和具体地点。 使用方法:可用鼠标或手指拖移、放大、缩小地图;点击地图获取经纬度。 以上故宫地图会定期更新,欢迎回访。https://bajiu.cn/ditu/?id=20685
8.故宫里的“裸眼3D技术”故宫里的“裸眼3D技术”_北京时间 故宫未开放区域中的倦勤斋里怎样实现了立体的视效? 故宫未开放区域中的倦勤斋里怎样实现了立体的视效? 故宫未开放区域中的倦勤斋里怎样实现了立体的视效? 故宫未开放区域中的倦勤斋里怎样实现了立体的视效?自动播放接下来播放 01:28 未开放区域之故宫养性殿中的福寿祈愿 2024https://item.btime.com/429ht2bbc2c9pfap2v75od5pjlb
9.收藏一张故宫全景收藏一张故宫全景 本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。http://www.360doc.com/content/24/1211/17/1106330_1141733937.shtml
10.故宫里九千多间房间,是如何布局的?看完只觉得古人真聪明比如,故宫前列的建筑宏伟壮丽,以呈现封建皇权的崇高;中部建筑则更为紧凑深幽,适合帝后日常生活;而御花园,作为皇宫的后花园,占地面积12000平方米,被各种奇花异草装点得如诗如画,为皇宫增添了几分宁静与美丽。在故宫的四大门中,午门无疑最为著名。这座宫门地位最高,只有皇帝可自由出入。神武门则是宫内日常https://baijiahao.baidu.com/s?id=1818105696300985155&wfr=spider&for=pc
11.Android三种姿势带你玩转360度全景图功能GoogleCardboard(Google VR)上面的一个集成模块,我们只使用里面展示全景图部分模块 Three.js(利用前端姿势)WebView混合开发 三种姿势孰强孰弱,根据需求你们自己判断!我会在结尾给出一些建议,多说无益开撸 先看下三种实现的效果: 1.OpenGL ES 实现后的效果故宫全景 https://www.jianshu.com/p/adfab8201660/
12.故宫三维全景环视立体照片,主要应用的技术是()?声明: 本网站大部分资源来源于用户创建编辑,上传,机构合作,自有兼职答题团队,如有侵犯了你的权益,请发送邮箱到feedback@deepthink.net.cn 本网站将在三个工作日内移除相关内容,刷刷题对内容所造成的任何后果不承担法律上的任何义务或责任 https://www.shuashuati.com/ti/36f5e418024b42a8b3fa078183692852.html?fm=bd3cfb4b4a581350642379a33dcc957409
13.故宫全景3d模型故宫全景模型图片素材免费下载3D溜溜网3d模型库,汇集多类型故宫全景模型图片素材,帮设计师根据不同场景,寻找免费下载的三维立体,3dmax和C4D模型素材,找故宫全景3d模型图片素材就来3D溜溜网。https://3d.3d66.com/relation/relation_2022106.html
14.故宫虚拟游故宫3D实景故宫720度,三维全景故宫举世闻名的紫禁城,浓缩了源远流长的中华文化,成为中国乃至世界文化历史上永恒的经典。从您看到的这张神奇的图片开始,全景客将带您踏进这座“殿宇之海”,开始一次前所未有的时空之旅!请把鼠标放到图上,向各个方向拽动,您就仿佛身临其境,自由自在地欣赏美景了。这时候,您可以点击图片上方的“到此一游”(抢位http://www.quanjingke.com/dest/ramble_gugong
15.如何在WebGL全景图上做标记WebGL可以用来做3D效果的全景图呈现,例如故宫的全景图。但有时候我们不仅仅只是呈现全景图,还需要增加互动。故宫里边可以又分了很多区域,例如外朝中路、外朝西路、外朝东路等等。我们需要在3D图上做一些标记表示某个小的区域。当点击这个标记时,界面切换到对应标记区域的全景图。下图是实现此功能的一个小DEMO: https://blog.csdn.net/weixin_34221773/article/details/85890443
16.三维虚拟仿真技术11篇(全文)(3)使用全景制作工具制作三维全景。 (4)进行预览和网上发布。分别将处理好的图片用软件处理,预先生成作品进行预览,如果不符合要求则进行修改,直到符合要求。然后保存好文件,再嵌入到网页中。 3.三维全景图教学示例开发 虚拟仪器展示是比较典型的对象全景,主要是让用户旋转、交互地观看仪器。我们可以为仪器创作配以解说https://www.99xueshu.com/w/ikey0kaqoms7.html
17.故宫“重量级藏品”搬回家!原故宫院长都点赞凤凰网凰家尚品结合了《这就是故宫》的手绘故宫高清全景图绘制,3D建模等多重复杂设计工序,耗时半年终于将设计稿件制作完毕,珍贵非凡! 精雕细琢一砖一瓦一草一木,力求还原紫禁城的真实全景! 全景浮雕紫禁城15万平方米,雕刻于100mg999足金之上,绝对是紫禁城600年来的典藏之作! https://mall.ifeng.com/c/8Q1VegJ2bvK
18.3D全景故宫网页版pano.dpm.org.cn在网上你就能参观故宫你敢信?而且还无需门票。 这个网站采用了360度全景高清图,全方位展示了故宫的美丽壮观。不仅有详细的地图和讲解,而且还配有悠扬动听的音乐,沉浸式参观,无需费劲徒步,动动手指就能去往任何你想欣赏的景点。 在线网址:https://pano.dpm.org.cn/#/https://www.xarjtc.com/11341.html
19.全景网站关键字全景视频播放器(UtoVR)软件介绍:这是一款 [ 查看详细 ] 分类: 视频影音| 语言: 中文| 大小: 27.79M| 评分: 4.0| 时间: 2022-11-28 转转鸟(得图全景相机) 转转鸟(得图全景相机)是一款全景相机应用app。 手机下载转转鸟app,就能进行360度全景拍摄,转转鸟app特有的引导式拍摄方法,让用户拍出完美的全景照片。http://www.downcc.com/tags_%C8%AB%BE%B0.html
20.全景故宫3d虚拟地图全景故宫3d虚拟地图官网网址入口:https://pano.dpm.org.cn/ 全景故宫这项服务不仅让故宫的历史文化得以传承,也使得无法亲临现场的人们能够通过科技手段欣赏到故宫的美景。全景故宫的推出,无疑是现代科技与传统文化结合的典范,它让故宫的参观不再局限于时间和空间,拓宽了人们了解和体验故宫的途径。通过全景故宫,用户可以https://www.bgrdh.com/sites/7103.html
21.故宫太和殿全景类图片素材60张我图找相似功能已为您找到60张与故宫太和殿全景类似的图片,包含各种高清原创故宫太和殿全景素材图片,找故宫太和殿全景相似图片就上我图网.https://so.ooopic.com/findsimilarity-27179011.html
22.(不定期更新)《虚拟现实应用技术》(Yanlz+Unity+XR+VR+AR+MR+AVE+++++立钻哥哥:要探索虚拟现实与新兴技术结合的应用发展路径;目前,5G、人工智能、云计算等新兴产业正如火如荼地建设,虚拟现实技术产业的改善离不开这些新兴技术的赋能,如5G的大带宽、低时延特性可大幅降低虚拟现实产品带来的晕眩感;人工智能技术有利于帮助虚拟现实产品全场景逼真画面的呈现;而云计算可以实现虚拟现实画面http://it.en369.cn/jiaocheng/1729032647a927876.html
23.故宫全景游iPhone版免费下载全球首款中英双语故宫虚拟旅游App,采用3D高清全景技术,全方位展现故宫的精美建筑艺术和悠久历史文化。 45张高清实景,中英文语音讲解,手绘导游图,体感变换全周视角,令您尽情享受超炫的全景体验,身临其境漫游故宫。1.中英文语音讲解,详尽了解故宫历史2.支持离线欣赏,无需使用流量3.支持重力感应,呈现4D效果4.手绘景区https://www.duote.com/ios/608352.html
24.[故宫建筑背景图]图片免费下载故宫建筑背景图素材千图网为您找到950张故宫建筑背景图相关素材,千图网还提供故宫建筑背景图图片,故宫建筑背景图素材, 故宫建筑背景图模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://m.58pic.com/tupian/gugongjianzhubeijingtu.html
25.全景故宫app预约下载(暂未上线)《全景故宫》是一款以3D虚拟地图为主的北京故宫导航软件,在这款软件中,不仅可以成为你的手机导游,而且更让你直观的感受到中国古代文化的魅力,皇室的建筑之美打给你的震撼!爱好旅游,喜爱古都的小伙伴可以来预约下载体验一下,绝对给你不一样的绝佳游玩体验!https://shouyou.3dmgame.com/android/119792.html
26.现实故宫全景模型3D嘲模型附材质需要手动贴图白膜现实故宫全景模型3D场景模型-附材质-需要手动贴图-白膜2021-07-15 室外建筑 2.67k 18 3 上一篇一酷网-K008罗马帝国著名建筑3D模型Kitbash3D 下一篇C4D流体动力学模拟插件Sitni Sati FumeFX 5.0.7 for Cinema 4D R18 – R24 Win 仅供交流学习,版权归原作者所有,禁止商业使用。 猜你喜欢 室外建筑 一酷C4D https://c4dco.com/50040.html
27.现实故宫全景模型3D嘲模型.zip游戏开发现实故宫全景模型3D场景模型.zip 游戏开发 - Unity3DBa**nt 上传21.11 MB 文件格式 zip 3dmax 3dmax版本的故宫模型,亲测3dmax2016可打开。点赞(0) 踩踩(0) 反馈 所需:7 积分 电信网络下载 技术资料分享技术资料分享proe使用技巧文件打开试除及删除旧版本资料分享.zip https://www.coder100.com/index/index/content/id/1715547