如何在 Three.js 上覆盖 HTML 文本/按钮?

2024-04-05

好的,很新three.js在这里,但我正在努力实现谷歌所拥有的https://beinternetawesome.withgoogle.com/interland https://beinternetawesome.withgoogle.com/interland

看 - 他们有全屏 Three.js 场景和文本、按钮(显然是 HTML div,不是通过 JS 生成的)完美地覆盖在顶部。

我看过https://discourse.thirdjs.org/t/trying-to-overlay-a-button-and-text-on-top-of-a- Three-js-scene/390/2 https://discourse.threejs.org/t/trying-to-overlay-a-button-and-text-on-top-of-a-three-js-scene/390/2

和类似的问题,但无法理解执行此操作的正确方法。我不想在 Three.js 中生成 UI 元素 - 我只想使用 HTML。

到目前为止,我生成了 Three.js 画布并将其添加到我的文档中,以便它获取并保持窗口的完整宽度/高度:

var controls, camera, renderer, scene, container, w, h;
renderer    = new THREE.WebGLRenderer()
// container = document.getElementById('canvas');
container = window;
w = container.innerWidth;
h = container.innerHeight;
renderer.setSize(w, h)
renderer.setPixelRatio( window.devicePixelRatio );
document.body.appendChild(renderer.domElement);

然后使用我现有的 HTML:

<body>
    <div id="ui">
    <p id="message">Test to change</p>
</div>

无论我如何使用 UI div 的 CSS 或 z 索引,我都会将 UI div 卡在顶部:

如何通过 HTML 覆盖我的内容来实现 Google 效果three.js场景?我究竟做错了什么?

我需要我的画布填充整个窗口,就像 Google 所做的那样,但无法实现它似乎预先制作画布 HTML 元素并尝试在 JS 中附加所有内容。


创造力取决于您,因为有很多方法可以实现所需的结果。

你可以从查看源码开始examples https://threejs.org/examples/来自 Three.js 的官方网站。在那里你可以看到如何info网页上示例集的一部分。

var buttons = document.getElementsByTagName("button");
for (let i = 0; i < buttons.length; i++) {
  buttons[i].addEventListener("click", onButtonClick, false);
};

function onButtonClick(event) {
  alert(event.target.id);
}

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

var controls = new THREE.OrbitControls(camera, renderer.domElement);

var geometry = new THREE.BoxGeometry(1, 1, 1);
var material = new THREE.MeshBasicMaterial({
  color: 0x00ff00,
  wireframe: true
});
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);

camera.position.z = 5;

var animate = function() {
  requestAnimationFrame(animate);
  renderer.render(scene, camera);
};

animate();
body {
  overflow: hidden;
  margin: 0;
}

.ui {
  position: absolute;
}

button{
  margin: 20px;
}
<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

<div style="width:100%;height:50px;text-align: center; color:white;" class="ui">Info header</div>
<button style="top:0" id="fire" class="ui">Fire</button>
<button style="bottom:0" id="spell" class="ui">Spell</button>
<button style="right:0" id="health" class="ui">Health</button>
<button style="right:0; bottom:0;" id="shield" class="ui">Shield</button>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Three.js 上覆盖 HTML 文本/按钮? 的相关文章

  • @RenderBody() 该怎么办?

    我有一个 ASP NET MVC 3 应用程序JQuery UI Tabs 我有一个主布局页面 layout cshtml 代码如下 大师 layout cshtml需要一个 RenderBody 代码 既然是必需的 那我该怎么办呢 我想我
  • Firefox CSS 大纲错误?

    在 Chrome 和 IE9 上 我指定的 CSS 轮廓完全符合我的要求 并充当我正在设计的元素周围的第二个边框 但在 Firefox 上 轮廓会向外扩展 以便包含我生成的 after 伪元素以及主元素 这是一个错误 还是预期的 有什么好的
  • 在移动网站中处理 iPhone 事件(如向左滑动)

    iPhone 浏览器是否有可以使用 Javascript 挂钩的特殊事件 例如 如果用户向左滑动 我想执行某个操作 如果有类似的活动 很高兴看到所有这些活动的参考 理想情况下 有一天所有触摸屏移动浏览器都会有一个标准 您可以访问多点触控事件
  • 如何使用CSS将文本放在“框”的右上角或右下角

    我怎样才能得到here and and here位于右侧 与 lorem ipsums 位于同一行 请参阅以下内容 Lorem Ipsum etc here blah blah blah blah lorem ipsums and here
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 如何使用 jest 通过 Promise.all 设置多次提取测试

    我在测试中使用 jest 我正在使用 React 和 Redux 并且执行以下操作 function getData id notify return dispatch gt dispatch anotherFunction Promise
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • Onblur 事件在另一个 div 的 onclick 之前触发

    如上所述 我有一个按钮 单击该按钮将打开子菜单 对于子菜单中的每个选项 都有三个元素 我认为实际上还有更多元素 但为了简单起见 将其保留为 3 我将焦点放在子菜单的主 div 白色 框架 上 Onblur 这个 div 然后我隐藏子菜单 这
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • CSS:理解和调整字体的行距/行高

    有人问了一个非常相似的问题here https stackoverflow com questions 13701110 css remove line height leading on larger text但确实回答得足够了 CSS
  • CSS 动画自定义属性/变量

    一段时间以来我一直在努力让它发挥作用 关键是内部 div 将具有某种形状 并且可能会不止一个 这就是为什么我使用nth child选择器 这个内部 div 应该显示然后再次隐藏一段时间 问题是 我想在一个动画中为所有 后来的 多个内部 di
  • 什么是 TinyMCE jQuery 包?

    我被要求在项目中使用 TinyMCE 编辑器 在下载页面上 有一个主包 然后是一个 jQuery 包 This package contains special jQuery build of TinyMCE and a jQuery in
  • 响应式2列2行布局

    我一直在试图弄清楚如何创建这个布局 我有一个 2 列布局 左列有 1 行 右侧有 2 行 我试图让它流畅地调整 我遇到的问题是 我希望右侧顶部图像的顶部与左侧图像的顶部对齐 而底部图像的底部与左侧图像的底部保持对齐 我应该使用桌子吗 这是我
  • JavaScript 正则表达式两个标签之间的多行文本

    我编写了一个正则表达式来从 HTML 中获取字符串 但似乎多行标志不起作用 这是我的模式 我想将文本输入h1 tag var pattern div class box content 5 h1 lt lt h1 gt mi m html
  • YouTube iFrame Player API 无法在 DOMWindow 上执行 postMessage

    我正在尝试使用以下命令将 youtube 加载到我的网页中YouTube iFrame Player API 并在加载时出现以下错误 Failed to execute postMessage on DOMWindow The target
  • Javascript/jQuery 外部高度()

    Does idOfLememt outerHeight 对所有浏览器产生相同的结果 IE7 有什么不同吗 只要去http api jquery com outerHeight http api jquery com outerHeight
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段
  • JavaScript 中“键”的类型是什么?

    当我失去焦点并开始思考一个愚蠢的问题时 我遇到了这样的时刻 var a b value b 的类型是什么 我的意思不是 值 的类型 而是标记为 b 的实际键 背景 当我必须创建一个字符串键时 我开始想知道这一点 var a b value

随机推荐

  • 使用 XML 差异和合并进行版本控制

    我正在寻找一个开源版本控制工具 可以比较和合并 XML 文件 我必须找到这样一个工具的困难在于 我需要正确合并比较节点而不是行的 XML 文件 任何想法 谢谢 不幸的是 对于这个问题没有一刀切的解决方案 XML 比较对于您认为不同的内容非常
  • 为什么 C# Parallel.Invoke 很慢?

    我正在这样做 private static void Main string args var dict1 new Dictionary
  • 带有每个项目的详细信息行的 Gridview

    我是 ASP NET 新手 我有一个基本的工作网格视图 列出了公司名称 参见下面的代码 我想要做的是在每个公司下提供另一个联系人子列表 在 子列表 中缩进一点 我想以某种方式循环遍历 Gridview 数据 然后运行联系人查询 将是 Sel
  • React、Webpack 应用程序中重叠 CSS

    我使用 webpack 和 Reactjs 创建了一个应用程序 到目前为止我已经创建了 2 个页面 我已经为这两个页面定义了 CSS 样式 但是 当我在加载页面 1 后加载页面 2 时 页面 1 的样式会干扰页面 2 的样式 例如 Page
  • 绘制指数或分位数色带在零附近发散的栅格

    我正在使用 R 函数levelplot 来自rasterVis包来绘制具有单个发散色带的三个栅格的堆栈 我想更改栅格颜色渐变的比例 以便地图突出较低值的差异 这可以通过颜色中断的非线性分级来完成 我正在使用来自的代码a gist https
  • Orderer有区块(账本)数据吗?

    我使用基于 Kafka 的订购服务构建了超级账本结构网络 我以为Orderer没有Block数据 但是 当我检查 Orderer 服务器中的 var hyperledger product orderer chains mychannel
  • 无法加载为扩展“[extensionHere]”注册的类型[nameHere]

    我一直在 fx3 5 上使用 WCF 学习和构建 JSONP Web 服务 你可以阅读我在以下网站进行的一些试验 NET ASMX 返回纯 JSON https stackoverflow com questions 1903022 net
  • 为什么 pygame 上两个移动物体之间的碰撞不起作用?

    我正在用 pygame 做一个蛇游戏 游戏中有两条蛇 我想检测蛇头何时与另一条蛇身体碰撞 对两者都执行此操作 以及当两个头碰撞时的特殊情况 我目前正在做蛇头和另一条蛇身体之间的碰撞 如果其中一条蛇被冻结而另一条蛇在移动 则碰撞效果很好 但如
  • 如何在代码中定义DataTemplate?

    我怎样才能创建一个DataTemplate在代码中 使用 C 然后向其中添加一个控件DataTemplate
  • 当我的项目有同名模块时,如何从标准库导入? (如何控制 Python 寻找模块的位置?)

    我的项目文件夹中有一个名为calendar 在代码的其他地方 我想使用标准库Calendar班级 但是当我尝试导入此类时 使用from calendar import Calendar 这会从我自己的模块导入 从而导致稍后出现错误 我怎样才
  • PHP IMAP 交换问题

    所以我目前正在编写的 PHP 脚本有一个小问题 首先 我假设该脚本应该连接到 IMAP 邮箱 搜索一些电子邮件并下载其附件 所有这些都已经编码并正在使用我自己的 Gmail 帐户 当我尝试连接到交换服务器时出现问题 短代码摘录 mbox i
  • “自动测试/rails [...]不[...]存在。正在中止”

    我发现自动测试已停止工作 autotest loading autotest rails Autotest style autotest rails doesn t seem to exist Aborting 根据这篇博文 http ww
  • 一次保存多个 Backbone 模型

    我有一个包含大量模型的 Backbone 集合 每当在模型上设置特定属性并保存它时 就会触发大量计算并重新渲染 UI 但是 我希望能够同时在多个模型上设置属性 并且只有在全部设置完毕后才进行保存和重新渲染 当然 我不想为一项操作发出多个 h
  • Angularjs:无法将类添加到ID

    这里有点情况 我刚刚学习 Angular 但遇到了以下问题 我有一个重复自身的列表 ng repeat 当它被渲染时 您可以单击它 然后我将一个类添加到您单击的列表项中 jQuery 风格 id addClass myClass id 存储
  • 如何在php中打印多维数组

    我有一个以下格式的数组 Array 0 gt Array product id gt 33 amount gt 1 1 gt Array product id gt 34 amount gt 3 2 gt Array product id
  • 从 google firebase 存储本地缓存图像

    我正在寻找一种方法 从 google firebase 平台上的存储中缓存图像 目前 我可以下载图像并向用户显示这些图像 但即使没有互联网连接 我也无法缓存和访问该图像 数据库可以离线访问 所以我想 也应该有一种存储方式 我不想将每个图像下
  • 锁定计算机或启动另一个实例时 Visual Studio 崩溃

    当我锁定计算机或启动另一个 Visual Studio 实例时 我遇到了 Visual Studio 2013 崩溃的问题 我使用应用了最新补丁的 Visual Studio 2013 我总是以管理员身份启动 Visual Studio 这
  • kotlin 从字符串到枚举的安全转换

    我需要将字符串转换为枚举值 但想要一个在字符串不是枚举时返回 null 的函数 enum class Colors Red Green Blue 如果 testString 是值 我可以使用 Colors valueOf testStrin
  • IIS 503 通过 HTTPS“服务不可用”,HTTP 工作正常

    我有一个在 IIS 7 5 中运行的网站 当我通过 HTTP 访问该网站时 一切正常 当我通过 HTTPS 运行该网站时 我立即地收到 HTTP 503 错误 服务不可用 网站上使用的 SSL 证书是自生成 自签名的 以下是我见过的类似问题
  • 如何在 Three.js 上覆盖 HTML 文本/按钮?

    好的 很新three js在这里 但我正在努力实现谷歌所拥有的https beinternetawesome withgoogle com interland https beinternetawesome withgoogle com i