THREE.js 使用 DOMElements 的 SphereGeometry 全景热点

2024-03-26

我使用以下命令创建了一个简单的 WebGL 3D 全景应用程序SphereGeometry, PerspectiveCamera and a CanvasTexture。现在,我希望通过在场景的某些部分添加“热点”来使场景栩栩如生SphereGeometry。我遇到的问题是了解如何更新各种DOMElements以便他们的位置反映更新的Camera位置。

基本上,作为Camera旋转各种DOMElements会相对于相机旋转的方向移入和移出视野。我尝试定位一个<div> absolute to the <canvas> and translating the X and Y使用返回的位置PerspectiveCamera camera.rotation但它并没有真正起作用;这是我的 JS 和 CSS 实现:

CSS

#TestHotSpot {
    /* not sure if using margins is the best method to position hotspot */
    margin-top: 50px;
    margin-left: 50px;
    width: 50px;
    height: 50px;
    background: red;
    position: absolute;
}

JavaScript

/** 
   CONFIG is my stored object variable; it contains the PerspectiveCamera instance 
   code is being called inside of my RequestAnimationFrame
**/

config.camera.updateProjectionMatrix();
config.controls.update(delta);

document.getElementById("TestHotSpot").style.transform = "translate("+ config.camera.rotation.x +"px, "+ config.camera.rotation.y +"px)";

Here http://mpetroff.net/software/pannellum/也是一个想要达到的效果的活生生的例子。

解决这个问题的最佳解决方案是什么?当我运行这个时我注意到的是DOMElements只会轻微移动;我还注意到他们并没有真正考虑到SphereGeometry它们被放置(例如,被放置在Camera;真的很复杂!

我很乐意使用任何插件THREE.js引擎并遵循任何教程。非常感谢您提前回复!


  1. 尝试将平面网格/网格设置为所需的点。
  2. 复制 css 元素的位置(使用 Three.js cssObject 创建的 domElements [如果您已经知道])以及planemesh/mesh 的位置。

你会完成的!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

THREE.js 使用 DOMElements 的 SphereGeometry 全景热点 的相关文章

  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 为什么元素上的负底部边距会降低该元素父元素的高度?

    这可能是由于边距折叠造成的 我知道边距折叠 至少知道它如何影响相邻元素 但我不明白当涉及负边距时它如何在嵌套元素上工作 例如 在此标记和随附的 CSS 中 Markup div class parent div class child Ch
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • PHP 的项目结构

    我是 PHP 新手 想了解 php 项目的目录结构 我有Java方面的经验 在java中我们有src包含java源文件 WEB INF包含lib和jsp页面 PHP 中有类似的标准目录结构吗 我们在 php 中也有分层吗 就像我们在 jav
  • Python 现在或将来会弃用“pytz”吗?

    pytz https pytz sourceforge net 用于Django 版本 选择当前时区 https docs djangoproject com en 3 2 topics i18n timezones selecting t
  • MYSQL 使用空间索引

    我正在尝试利用空间索引 我有一个 ip 表和一个包含 ip 块范围的 ip2geo 表 我正在尝试将 Geo ID 分配给 ip2geo 表中的每个 ip 当尝试使用列值进行选择时 空间索引不会被使用 EXPLAIN SELECT SELE
  • 为什么通过 AJAX 发送此 POST 变量为 Null? (jquery/php)

    该 JavaScript 用于 加载更多 功能 当单击按钮 moreg 时 它会从 load php 中获取固定数量的元素 function moreg click load var countg 1 load function load
  • 为什么我的 Nginx 反向代理执行 301 重定向而不是代理?

    我在 docker 容器内有一个 Nginx 反向代理 它监听端口 3000 并暴露给 3002 docker run p 3002 3000 这个想法是这个反向代理将代理 my app到我的笔记本电脑中在端口 8080 上运行的实例 和
  • 以编程方式更改视图的右边距?

    这个属性可以在Java代码中动态改变吗 android layout marginRight 我有一个TextView 它必须动态地将其位置向左更改一些像素 如何以编程方式做到这一点 编辑 一种更通用的方法 不依赖于布局类型 除了它是支持边
  • 如何在 IndexedDB 中进行 JOIN 类型查询

    我尝试按照以下教程进行操作http hacks mozilla org 2010 06 comparing indexeddb and webdatabase http hacks mozilla org 2010 06 comparing
  • 如何在 jquery 表单验证上显示独特的成功消息

    希望你能在这方面帮助我 我目前正在使用这个 jQuery 插件 验证 主页 http bassistance de jquery plugins jquery plugin validation 我一直在这里阅读相关问题 但这是最接近的 h
  • 我可以用什么来替换 HTML 中的   ?

    nbsp nbsp 我觉得很丑 边距和 或填充 CSS 属性 如下所示 p style padding left 10px Hello p 值得注意的是 放置这样的内联样式通常被认为是不好的做法 您通常在外部 css 文件中声明一个选择器并
  • 服务器场(服务计划)SKU

    是否有文档列出了 Azure 应用服务计划 服务器场 支持的 sku 名称和层 例如 名称 S1 等级 标准 S1 标准 和 名称 Y1 层 动态 功能消耗计划 支持的值列表 是否有第二年的消费计划 和服务器配置确实有助于规划 有多种方法可
  • Rails 4 中“确认”条件的干净方法

    我的 Rails4 页面上有一个使用 slim 语法的 link to 以下链接 to link to exports path data confirm Are you sure 现在需要仅在特定条件下显示确认消息 我们如何在rails4
  • 如何删除数据框中值的顺序不重要的行

    我有一个像这样的数据框 source target weight 1 2 5 2 1 5 1 2 5 1 2 7 3 1 6 1 1 6 1 3 6 我的目标是删除重复的行 但源列和目标列的顺序并不重要 事实上 两列的顺序并不重要 应该将其
  • 使用 Linq to SQL 删除表中的行

    我有一个体育数据库 其中有一个表 groupmembers 其中包含字段 ID groupID 和 memberID 我从名为 txtRemoveGroupMember 的文本框中获取memberID 并从复选框列表中获取groupID 现
  • 使用 Boost Spirit 解析语法

    我正在尝试解析像下面这样的树表达式之类的 C 函数 使用精神解析器框架 http en wikipedia org wiki Spirit Parser Framework F A B GREAT SOME NOT C YES 为此 我尝试
  • 如何在作为协议类型的 Swift 通用数据结构中使用弱引用?

    我想在通用数据结构中使用弱引用 在里面 下面是数组的示例 但通常是任何泛型类型 我几乎可以得到它 上班 我的实验开始得很顺利 以下作品 Array of weak references OK struct WeakReference
  • 更改 ListView 阴影颜色和大小

    当 ListView 中的项目列表比 ListView 的大小长时 您会看到一个阴影 指示上方或下方有更多项目 默认情况下 该阴影是黑色的 这是不可取的 如果我将 cacheColorHint 设置为以下内容 android cacheCo
  • 调用布尔值的成员函数 fetchAll()

    我有以下问题 这个错误一直伴随着我 致命错误 未捕获错误 在 C xampp htdocs certificado functions php 49 中的布尔值上调用成员函数 fetchAll 堆栈跟踪 0 C xampp htdocs c
  • 在抽象方法上实现“after”装饰器

    我正在尝试编写一个抽象基类A它将有一个抽象方法run用户 开发人员预计会超载 我想强制执行一些 之后 行为自动应用于派生类B 这样之后B run 运行完毕后 将调用另一个标准方法 在数据管道中 这可以例如提交或回滚事务 有办法实现这一点吗
  • 用周围值的平均值替换缺失值

    我的数据集如下所示 我们称之为 a date value 2013 01 01 12 2 2013 01 02 NA 2013 01 03 NA 2013 01 04 16 8 2013 01 05 10 1 2013 01 06 NA 2
  • THREE.js 使用 DOMElements 的 SphereGeometry 全景热点

    我使用以下命令创建了一个简单的 WebGL 3D 全景应用程序SphereGeometry PerspectiveCamera and a CanvasTexture 现在 我希望通过在场景的某些部分添加 热点 来使场景栩栩如生Sphere