Three.js 立方体每面都有不同的纹理

2024-02-17

我正在尝试创建一个 Three.js 立方体,每个面上都有不同的纹理。

基本上是一个骰子。这是在我的沙盒环境中,因此应该只生成一个旋转立方体,每侧都有骰子图像 (1-6)。完成后,我打算将其用于浏览器基础游戏。这个例子我只在 Chrome 中进行了测试,尽管考虑将其更改为画布渲染器以获得额外的浏览器支持。

看了一些关于 SO 的问题和大量其他谷歌搜索,虽然我有了答案(实际上看起来相当简单),但我根本无法让它发挥作用。

我对 Three.js 相当陌生,但对 JavaScript 不太熟悉。

我用来参考的页面是

SO - Three.js 立方体每面都有不同的纹理 https://stackoverflow.com/questions/11961288/three-js-cube-with-different-texture-on-each-face-how-to-hide-edges-vertices

SO - 具有不同纹理面的 Three.js 立方体 https://stackoverflow.com/questions/13053687/threejs-cube-with-different-texture-faces-lit-by-point-light-with-canvas-rendere

evanz - 测试 Three.js 立方体 http://www.evanz.net/threejs/test_threejs.html

and enriquemorenotent.com - Three.js 构建一个立方体,每个面上都有不同的材料 http://enriquemorenotent.com/three-js-building-a-cube-with-different-materials-on-each-face/

My Code

var camera, scene, renderer, dice;

init();
animate();

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

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
    camera.position.set(110, 110, 250);
    camera.lookAt(scene.position);
    scene.add(camera);


    var materials = [
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-1-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-2-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-3-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-4-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-5-hi.png')
       }),
       new THREE.MeshLambertMaterial({
           map: THREE.ImageUtils.loadTexture('/Content/Images/dice-6-hi.png')
       })
    ];
    dice = new THREE.Mesh(
        new THREE.CubeGeometry(562, 562, 562, 1, 1, 1, materials),
        new THREE.MeshFaceMaterial());
    scene.add(dice);

}

function animate() {
    requestAnimationFrame(animate);
    dice.rotation.x += .05;
    dice.rotation.y += .05;
    dice.rotation.z += .05;
    renderer.render(scene, camera);
}

我得到的错误是

Uncaught TypeError: Cannot read property 'map' of undefined 

来自 Three.js 第 19546 行(不是最小版本) WHichi 是 bufferGuessUVType(material) 函数 - 材质未定义。这让我相信我的一个/所有材料定义中有些东西是不正确的。

使用三.js r58。

实际上没有 HTML 或 CSS,此时只有 JS

我可以很高兴地得到一个立方体,其六个面都旋转相同的图像,但不能旋转不同的图像。这些图像只是骰子点 1 - 6 的图像。

如果需要的话,再多一点时间我可以做小提琴


EDIT: THREE.MultiMaterial已被弃用。您现在可以将材料数组直接传递到构造函数中。就像这样:

dice = new THREE.Mesh( new THREE.BoxGeometry( 562, 562, 562, 1, 1, 1 ), materials );

scene.add( dice );

小心从网上复制旧的例子。

始终检查迁移维基 https://github.com/mrdoob/three.js/wiki/Migration-Guide寻求帮助升级到当前版本。

三.js r.85

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

Three.js 立方体每面都有不同的纹理 的相关文章

  • JavaScript“类”的规范术语[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这是一个在 JavaScript 中定义 类 创建它的实例并调用它的方法 函数之一的简单示例 Define a class like this
  • 为什么 AngularJS 在使用 ng-bind-html 时会去掉 data- 属性?

    我正在使用 contentEditable div 来使用户能够格式化他们的文章 我对html内容做了一些处理并保留它 我在用ng bind html当观众想要阅读文章时呈现结果 我不想使用 sce trustAsHtml因为我仍然希望 A
  • 如何使用鼠标单击选择多个项目?

    This is the default jQueryUI display as a Grid Layouts demo here http jqueryui com demos selectable display grid I can s
  • 减少 JavaScript 中的对象数组

    我在 javascript 中有一个想要减少的对象数组 请参阅下面的代码 6 位或以上的消息已验证 较少的消息未验证 我将他们按组分组 const myArray group groupA message Text without a nu
  • JW Player - 视频可以在 Chrome 中播放,不能在 Firefox 或 IE 中播放

    See 工作链接 http www 888behindthescenes com test 在主页上我有两个视频 intro video 和 video container 在 chrome 下我没有问题 但在 firefox 和 IE 中
  • 设置 JavaScript 对象的 length 属性

    假设我有一个 JavaScript 对象 function a var A this length function return A length this add function x A push x this remove func
  • Android 上的 setTimeOut() 相当于什么?

    我需要等效的代码setTimeOut call function milliseconds 对于安卓 setTimeOut call function milliseconds 您可能想查看定时任务 http developer andro
  • javascript 中的类型安全或如何避免很难检测到类型相关的错误

    我来自 Java 世界 即类型安全的世界 现在正在做一些需要使用 JavaScript 进行客户端执行的事情 由于 JS 的非典型化 我有时会遇到很难检测到错误的情况 我想知道是否有任何方法可以提前阻止它 例如 设置诸如 使用典型化 之类的
  • .getDay() 奇怪的行为[重复]

    这个问题在这里已经有答案了 有一个例子 console log new Date 2013 02 24 getDay 24 gt 0 24 console log new Date 2013 02 25 getDay 25 gt 1 25
  • 如何获取 CSS 旋转元素的实际(非原始)高度

    我需要获取几个不同元素的实际高度 为了精确的自定义工具提示定位 并且其中一些元素 不是全部 被旋转 elem outerHeight 返回原始高度 而不是实际显示的高度 这是一个非常简单的例子 http jsfiddle net NPC42
  • 当容器有选择框时 jQuery mouseleave 触发问题

    我有两个容器 一个嵌套在另一个容器内 当我将鼠标悬停在父容器上时 我希望显示子容器 当我鼠标移出时 我希望子容器淡出 我遇到的问题是子容器有一个包含 选择框 的表单 当用户选择选择框时 会意外触发 mouseleave 事件 如何阻止选择框
  • navigator.platform 在 ARM Mac 上的价值是什么?

    苹果有released https www apple com apple events november 2020 几款基于采用 ARM 架构的 M1 芯片的新计算机 与之前基于 x86 架构的计算机相比 的价值是多少navigator
  • 与玻璃钢战斗

    我读过有关 FRP 的内容 非常兴奋 它看起来很棒 因此您可以编写更多高级代码 并且一切都更加可组合 等等 然后我尝试用数百个 sloc 从纯 js 到 Bacon 重写我自己的小游戏 我发现 我实际上不是编写高级纯逻辑代码 而是击败了 B
  • 如何切换整个页面的深色主题?

    我已经成功地在 html 和 Flask 中按下复选框时切换深色主题和浅色主题 但是我怎样才能让深色主题覆盖整个页面 而不仅仅是一些 div 元素呢 边距仍然是浅色主题 CSS代码如下 container display flow widt
  • 解密Javascript源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经编写了一段 JavaScrip
  • 如何使 Loopback 模型事件起作用?

    我尝试过一个例子http apidocs strongloop com loopback model http apidocs strongloop com loopback model MyModel on changed functio
  • 如何从 dataurl 在服务器上创建图像文件

    我有一个 dataurl 格式的图像 例如 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAAD 2wBDAAMCAgMCAgMDAwMEAwME iiigAooooAKKKKACiiigAoo
  • ajax - 检查用户名是否存在+如果存在则返回消息

    我试图检查用户想要的用户名是否已被使用 而无需发送表单 基本上是用户名字段的模糊 我遇到了一些麻烦 有几个问题 我有我的输入字段加上js
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • 错误:Javascript 上的 [object Object]

    当我在 Firebug 中运行下面的 javascript 时 我不断收到错误 我已经尝试更改多项内容 但它仍然输出错误 我正在使用 api 从 XML 检索信息 然后将其输出到屏幕上 但我不断收到对象错误 有人能看出为什么吗 任何帮助表示

随机推荐

  • 如何将两个 PDF 页面拼接在一起成为一张大页面?

    我有两张 36 x 48 海报 LaTeX 我想将其附加到一张 72 x 48 海报中 垂直堆叠 浏览 SO 和 GS 文档 我没有任何线索 我不是 CLI 向导 我怎样才能做到这一点 此外 该过程不应有损地压缩光栅图像 因为这将以 240
  • switch 似乎比 if 慢

    我很好奇速度switch 相信它 非常 快 但我有一个测试用例 似乎表明单个开关的速度大约与 4 一样快if测试 当我预期 没有充分的理由 它会像 1 次测试一样快 这是我写的两个方法来比较switch with if public sta
  • 挑选一个删除文件的提交

    我需要合并几个存储库 每个存储库都是从TFS http en wikipedia org wiki Team Foundation Server 合而为一 为此 我使用 gitcherry pick 命令 该命令适用于某些提交 但不适用于其
  • 缺少 Google 地图 API V2 google-play-services_lib.jar

    I just imported an example of the google map api V2 for android to test It s missing the google play services lib jar I
  • 按 xml 字母顺序对数据进行排序

    输入 XML
  • 如何配置 django-uploadify 仅用于视频上传?

    我想用django uploadify https github com tstone django uploadify仅上传视频 我只希望它仅上传视频 所有类型的视频 或至少所有类型的流行视频格式 到目前为止 我添加了uploadify
  • 为什么将 (Object)null 结果转换为非空?

    我使用 java 7 并创建一个 varargs 方法 public class JavaApplicationTest param args the command line arguments public static void ma
  • R Markdown pdf部分彩色单元格背景(数据栏)

    Excel 有一个称为 数据栏 的功能 它允许根据具有相应长度的单元格值进行条件格式设置 此功能可以通过 R 中的 formattable 使用格式化程序和 color bar 来完成 然而 这样做的结果是一个 html 小部件 无法在 p
  • 为什么在目录上调用 File.listFiles 时可以返回 null?

    我正在创建一个 Android 应用程序 我想列出目录中的文件 我通过调用来做到这一点 File files path listFiles new CustomFileFilter path is a File对象 通过调用创建 File
  • 在三星设备上继续运行时异常:android.view.DisplayListCanvas.throwIfCannotDraw

    我在 Play 商店控制台上发生多次崩溃 我已经检查了可绘制文件夹中的所有图像 这对我来说似乎没问题 因为我怀疑这可能会导致问题 据报道 它主要在三星设备上崩溃 请指出发生了什么错误 对于背景图像 我也使用这个尺寸 高清 480 800 x
  • ngAnimate CSS 动画不适用于 ng-show 和 ng-hide

    DEMO http plnkr co edit cPDUWO p preview http plnkr co edit cPDUWO p preview 我在页面上显示了 2 个选中的复选框和 2 个小部件 单击复选框将使用ng show
  • 签署 F# 程序集(强名称组件)

    我在 CodeProject 上找到了这篇文章 http www codeproject com Articles 512956 NET Shell Extensions Shell Context Menus http www codep
  • python 中的“is”是如何工作的?

    请有人解释一下如何在 if 条件下使用 is 我正在使用分数模块 但遇到了一些麻烦 gt gt gt Fraction 0 1 is 0 False gt gt gt float Fraction 0 1 0 0 gt gt gt floa
  • 如何使用 IDisposable 修复内存泄漏

    我有一个 net 应用程序似乎存在内存泄漏问题 net 服务启动时大约需要 100MB 内存 但在负载下它会达到大约 400 500MB 我的大多数类都没有非托管资源 并且那些已经实现了 IDisposable 的类 所以我的问题是在我的课
  • 延迟加载加载图像后如何触发事件?

    我有需要绝对定位的图像 以便图像的中心位于其父 div 的中心 我已经有执行此操作的代码 我最近添加了延迟加载插件 它按预期工作 但我需要一种触发图像居中代码的方法after延迟加载已加载and图像淡入 我当前的代码基本上是这样的 jQue
  • 更改现有应用程序的证书指纹

    我有一个已发布到 Google Play 的现有应用程序 一切都很好 直到我换了一台电脑并且我的 sha1 指纹发生了变化 有没有可能的方法来更改 google play 开发者控制台中现有应用程序的 sha1 如果没有 我该如何处理 谢谢
  • 在 numpy 中乘以对数概率矩阵的数值稳定方法

    我需要获取包含对数概率的两个 NumPy 矩阵 或其他二维数组 的矩阵乘积 天真的方式np log np dot np exp a np exp b 由于明显的原因而不是首选 Using from scipy misc import log
  • 调用虚拟成员类的方法

    我知道该怎样virtual在成员函数的上下文中工作 但我在网上看到一篇关于虚拟成员类的文章 这让我感到困惑 我找到的例子是这样的 class Machine void run virtual class Parts The inner cl
  • GIT 无法从远程存储库读取

    我克隆了一个私人存储库 将其分叉 并对功能分支进行了一些更改 当我尝试将这些更改推送到存储库时 我收到以下消息 Permission denied publickey fatal Could not read from remote rep
  • Three.js 立方体每面都有不同的纹理

    我正在尝试创建一个 Three js 立方体 每个面上都有不同的纹理 基本上是一个骰子 这是在我的沙盒环境中 因此应该只生成一个旋转立方体 每侧都有骰子图像 1 6 完成后 我打算将其用于浏览器基础游戏 这个例子我只在 Chrome 中进行