在 Three.js 中添加视频作为纹理

2023-11-23

我正在研究 Three.js 的这个示例:http://trijs.org/examples/#canvas_geometry_panorama_fisheye

在此示例中,我没有使用 6 张图像,而是使用 5 张图像和一个视频作为纹理(视频格式为 .ogv)。我将上面的示例编辑如下以实现我的愿望:

video = document.createElement('video');
video.autoplay = true;
video.src = "textures/videos/Row1Col1.ogv";
var videoTexture = new THREE.Texture(video);
    videoTexture.needsUpdate = true;

var materials = [
    videoTexture, // right
    loadTexture( 'textures/cube/Park2/negx.jpg' ), // left
    loadTexture( 'textures/cube/Park2/posy.jpg' ), // top
    loadTexture( 'textures/cube/Park2/negy.jpg' ), // bottom
    loadTexture( 'textures/cube/Park2/posz.jpg' ), // back
    loadTexture( 'textures/cube/Park2/negz.jpg' ) // front
];

mesh = new THREE.Mesh( 
    new THREE.BoxGeometry( 300, 300, 300, 32, 32, 32 ), 
    new THREE.MultiMaterial( materials ) 
);

其余代码与上述示例中的完全相同。

我没有得到所需的结果(其中有五个图像渲染到球体上,一个视频在“一侧”播放),而是得到了以下结果:

enter image description here

图像渲染得很好,但我看不到视频正在播放。它的位置上只有白色文字。没有其他的。

我是 Three.js 的新手,我第一次尝试使用视频作为纹理。请帮助我,让我知道如何在指定区域播放视频。


检查来源THIS页面(Three.js 版本 60)。
您可以看到他为让视频正常运行付出了更多努力。
具体来说,将视频绘制到画布上并使用画布作为材质的纹理。

// create the video element
video = document.createElement( 'video' );
video.src = "textures/videos/Row1Col1.ogv";
video.load(); // must call after setting/changing source
video.play();
videoImage = document.createElement( 'canvas' );
videoImage.width = 480;
videoImage.height = 204;

videoImageContext = videoImage.getContext( '2d' );
// background color if no video present
videoImageContext.fillStyle = '#000000';
videoImageContext.fillRect( 0, 0, videoImage.width, videoImage.height );

videoTexture = new THREE.Texture( videoImage );
videoTexture.minFilter = THREE.LinearFilter;
videoTexture.magFilter = THREE.LinearFilter;

这个答案现在已经旧了(三.js v60),查看其他答案以了解替代方法

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

在 Three.js 中添加视频作为纹理 的相关文章

随机推荐

  • 循环遍历最多 k 位为 ON 的整数的最佳方法是什么?

    我需要循环遍历所有最多有 k 位 ON 位 1 的 n 位整数 其中 0 目前我正在使用这个简单的算法 for x 0 to 2 n 1 count number of bits 1 in x if count lt k do someth
  • Google 自定义搜索 API 的 OAuth2 范围

    我已经创建了 CSE 需要以编程方式更新促销活动 这是在后端系统中完成的 因此身份验证过程中的用户交互不是一种选择 可以通过 HTTP 使用自定义搜索 API 来更新促销活动 此过程需要身份验证令牌 他们的文档说自定义搜索仅支持 Clien
  • jsf 中没有会话生成

    在JSP中 有一个属性session用于禁用请求中的自动生成会话 有没有办法在 JSF2 中做同样的事情 Thanks 为什么 因为我们有一个公共注册表单页面作为应用程序中的默认页面 这是一个非常简单的表单 每次人们 或机器人等 请求主页时
  • 如何使用 Java 流将两个数组合并到一个映射中?

    假设我们有以下两个数组 String keys new String a b c aa d b int values new int 1 2 3 4 5 6 通过将这两个数组合并到 HashTable 中 我们得到以下结果 pseudo c
  • jquery select 具有多个属性的元素

    好吧 我现在对 jquery 的选择器过程感到很困惑 是的 开始时很混乱 我的页面上有 2 个输入元素 我想删除其中一个 这是我的输入
  • 设备上运行的应用程序中的所有活动的列表

    如何获取设备上运行的应用程序中的所有活动的列表 例如 包括 pdf 生成和电子邮件活动 我可以使用以下代码检查活动 ActivityManager am ActivityManager this getSystemService ACTIV
  • gdb 不适用于 macos High Sierra 10.13.3

    我已经用brew安装了gdb 8 1 我也有 codesign gdb 和 gdbinit 如下所示 set startup with shell off 我已禁用 SIP 功能 csrutil status System Integrit
  • 单一职责原则与贫乏/丰富领域模型有何关系?

    目前正在对从另一个团队接管的东西进行一些代码审查 并对应用 SRP 及其与贫血或丰富域模型 由 Martin Fowler 定义 的关系存有疑问 富域模型的概念是拥有智能对象 不仅可以设置 获取其属性 还可以执行一些更复杂的业务逻辑 我想知
  • 重组文本列表出现“意外缩进”

    我没有成功使用 Restructedtext 获得简单的 3 级缩进列表 cat test rst Title aaaa aaaa2 aaaa2 aaaa3 aaaa aaaa Ok rst2html test rst gt tmp a h
  • 具有大量查询的node-postgres

    我刚刚开始使用node js 和postgres 使用node postgres 我尝试做的事情之一是编写一个简短的 js 来填充我的数据库 使用一个包含大约 200 000 个条目的文件 我注意到一段时间后 不到 10 秒 我开始收到 错
  • 无法识别的表达式“$first”

    我需要从数组中提取第一项并将其添加到它自己的对象中 所以我发现 first 正是这样做的https docs mongodb com manual reference operator aggregation first array ele
  • 指向数组的指针数组

    我是 C 编程新手 这是我的问题 我想将每个数组的第一个值存储在一个新数组中 然后将每个数组的第二个值存储在一个新数组中 依此类推 我可以声明指针数组 但我不知道如何使用它 拜托 我需要帮助 int main int t1 4 0 1 2
  • Pandas 0.19.2 read_excel IndexError:列表索引超出范围

    我正在寻找解析 Excel 电子表格 我决定使用 pandas 但立即就遇到了错误 我从下面的代码开始 但使用完整路径并尝试设置工作表名称 import pandas as pd table pd read excel ss 12 xlsx
  • 随机数生成器测试

    您将如何测试随机数生成器是否生成实际的随机数 我的方法 首先构建一个大小为 M 的哈希 其中 M 是素数 然后拿号码 由随机数生成器生成 并与M取模 并查看它填充了所有散列或仅填充了某些部分 这就是我的方法 我们可以通过可视化来证明这一点吗
  • 确定全局/根坐标中的 SVG 视口

    SVG 元素内实际可见的内容取决于其宽高比 viewBox值及其preserveAspectRatio value 例如 相同的 SVG 元素大小具有相同的viewBox值 下面的红色虚线 可以有不同的视口 下面以蓝色显示 具体取决于pre
  • TLS ECDHE-ECDSA-AES128-GCM-SHA256 的密钥生成要求

    我想知道 ECDHE ECDSA AES128 GCM SHA256 和 ECDHE ECDSA AES128 GCM SHA256 是否有最低密钥生成要求 我试图让 TLS 客户端和服务器使用上述算法之一相互连接 并不断收到 无共享密码错
  • C++ 应用程序可以使用 JNI 加载 .jar 文件吗?

    感谢您查看问题 我正在尝试使用 JNI 接口调用类文件中的 java 方法 反过来 被调用的类文件应该执行驻留在同一目录中的另一个 jar 文件 我很难做到这一点 并且执行 jar 文件失败 我的意思是我无法从 jar 文件中提供的类 fu
  • 如何解决此错误“Kotlin:[内部错误] java.lang.ExceptionInInitializerError”

    fun main fun convert x Double converter Double gt Double Double val result converter x println x is converted to result
  • LocationClient 在 `onDisconnect` 处自动重新连接

    当连接丢失时 当用户清除 RAM 时 我尝试重新连接到 LocationClient 我尝试使用这段代码 private final GooglePlayServicesClient ConnectionCallbacks mConnect
  • 在 Three.js 中添加视频作为纹理

    我正在研究 Three js 的这个示例 http trijs org examples canvas geometry panorama fisheye 在此示例中 我没有使用 6 张图像 而是使用 5 张图像和一个视频作为纹理 视频格式