在已弃用的 THREE.ImageUtils.loadTexture 上使用 THREE.TextureLoader 时出现纹理问题

2024-01-08

我正在使用这个函数在圆柱体上添加纹理。

function createElementMaterial() {
    THREE.ImageUtils.crossOrigin = '';
    var t = THREE.ImageUtils.loadTexture( IMG_MACHINE );
    t.wrapS = THREE.RepeatWrapping;
    t.wrapT = THREE.RepeatWrapping;
    t.offset.x = 90/(2*Math.PI);
    var m = new THREE.MeshBasicMaterial();
    m.map = t;
    return m;
}

它正在工作并添加纹理,但在控制台中它设置了一条警告消息。

THREE.ImageUtils.loadTexture 已被弃用。使用 改为 THREE.TextureLoader()。

然后接着this https://threejs.org/docs/#api/loaders/TextureLoader文档来自Threejs.org https://threejs.org/docs/#api/loaders/TextureLoader。我把这个功能改成了这个。

function createElementMaterial() {
    var loader = new THREE.TextureLoader();

    // load a resource
    loader.load(
        // resource URL
        IMG_MACHINE,
        // Function when resource is loaded
        function ( texture ) {
            // do something with the texture
                texture.wrapS = THREE.RepeatWrapping;
                texture.wrapT = THREE.RepeatWrapping;
                texture.offset.x = 90/(2*Math.PI);
            var material = new THREE.MeshBasicMaterial( {
                map: texture
            } );
        },
        // Function called when download progresses
        function ( xhr ) {
            console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
        },
        // Function called when download errors
        function ( xhr ) {
            console.log( 'An error happened' );
        }
    );
}

With this code I am not being able to get that texture wrapping cylinder. Here's the before and after image. TIA. Before and After using THREE.TextureLoader()


您必须从您的职能中返回材料。你可以这样做:

function createElementMaterial() {

    var material = new THREE.MeshBasicMaterial(); // create a material

    var loader = new THREE.TextureLoader().load(
        // resource URL
        IMG_MACHINE,
        // Function when resource is loaded
        function ( texture ) {
            // do something with the texture
                texture.wrapS = THREE.RepeatWrapping;
                texture.wrapT = THREE.RepeatWrapping;
                texture.offset.x = 90/(2*Math.PI);
                material.map = texture; // set the material's map when when the texture is loaded
        },
        // Function called when download progresses
        function ( xhr ) {
            console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
        },
        // Function called when download errors
        function ( xhr ) {
            console.log( 'An error happened' );
        }
    );
    return material; // return the material
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在已弃用的 THREE.ImageUtils.loadTexture 上使用 THREE.TextureLoader 时出现纹理问题 的相关文章

随机推荐

  • 如何让 TProgressBar 停止滞后?

    我有一个运行大量操作的应用程序 并且我正在尝试使用 TProgressBar 来跟踪正在发生的情况 我设置了多个步骤 并调用 StepIt 来增加进度条 问题是 它并没有很好地跟上 它似乎不喜欢直接跳到正确的位置 而是逐渐滑动到正确的位置
  • 如何获取调用别名方法的名称?

    我正在调用方法link to admin然后我给另一个方法起了别名simple link to def link to admin name url options My stuff here link to name url option
  • 使 Http DefaultClient 的execute()非常慢

    我的 HttpDefaultClient 的 execute 方法的执行方法存在大量性能问题 我目前正在使用它来将数据发布到服务器 接收 JSON 并反序列化数据 我的手机打电话需要 8 到 30 秒 如果我切换到 Wifi 速度相当快 在
  • Wix:安装过程中忽略对话框中的属性更改

    我在 Wix 文件中有一个属性 该属性公开用于在对话框中进行编辑 在下面的示例中 它是 MyProperty 该属性用于创建注册表项 但是 如果在对话框中更改属性 则不会使用更改后的值 而是默认值 SomeProperty 但是 如果我在另
  • Python 多处理问题?

    我有一个包含 500 个输入文件的文件夹 所有文件的总大小约为 500 MB 我想写一个python执行以下操作的脚本 1 将所有输入文件加载到内存中 2 初始化一个空的python稍后将使用的列表 参见项目符号 4 3 启动 15 个不同
  • 如何使用 Huggingface Trainer 微调 gpt-j

    我正在尝试使用 Huggingface 训练器微调 gpt j 但惨败 我遵循了引用 bert 的示例 但是当然 gpt j 模型并不完全类似于 bert 模型 该错误表明模型没有产生损失 这很好 但我不知道如何让它产生损失或如何改变训练者
  • 如何在postgresql中使用for循环创建多个表

    如何使用一个表创建多个表forpostgresql 中的循环 例如 我需要创建 c emloyee r employee i employee 等 我在 FOR 附近遇到语法错误 bin sh Invoke postgre SQLVARCH
  • 将流拆分为具有 N 个元素的子流

    我们能否以某种方式将 Java 中的流拆分为不超过 N 个元素的子流 例如 Stream
  • 如何在.NET中编辑EXIF数据[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一个照片库 共享网站 并且想要 1 将 EXIF 数据写入服务器上存储的 JPEG 以及 2
  • npm install 正在我的角度项目根目录中构建 .cmd 文件

    我有一个项目已经工作了很长一段时间 它已经构建和编译 并且仍然在不同的机器上执行 了几个月 现在 当我运行命令 npm install 时 它会正常运行 但在该过程结束时 它会在我的项目的根文件夹中构建大量 cmd 文件 以及另一个附带文件
  • 根据条件从列表中删除项目

    我有一个这样的结构 public struct stuff public int ID public int quan 并想要删除该产品ID is 1 我目前正在尝试这个 prods Remove new stuff prodID 1 它不
  • 如何在 Docker Compose V3 中扩展服务?

    我有一个docker compose yml看起来像 version 2 services redis image redis mysqldb image mysql 5 7 environment MYSQL ROOT PASSWORD
  • blogger+video.js 我如何添加质量级别,如 1080p、720p、480p

    我在我的中添加 video jshttps www blogger com https www blogger com网站 但我如何添加 1080p 720p 480p 等质量级别 我添加的代码 在头 在身体里
  • Angular 2 - 链接 http 请求

    我从 httpService 获取 RxJS Observable 这是来自 Angular 的实际 http 现在 一旦我得到积极的结果 我想处理我得到的下一个 http 请求this retrieve 这或多或少是串联请求 有更好的方法
  • 有没有办法为函数创建预处理器宏?

    是否可以根据函数结果创建 C 预处理器宏 例如 我想在预处理器宏定义中动态保存屏幕高度 define SCREEN HEIGHT GetSystemMetrics SM CYVIRTUALSCREEN 然后我想使用结果根据屏幕高度设置值 i
  • Spring Boot,如何在不使用 ldif 的情况下使用 LDAP 进行身份验证?

    我正在 Spring Boot 中尝试 LDAP 身份验证示例here https spring io guides gs authenticating ldap 它使用 ldif 方法 我认为该方法不适用于我的要求 因为我们的 ldap
  • 在变量中存储 const 值与在状态中存储 const 值有区别吗?

    我注意到有几种方法可以在 React 功能组件中实现看似相同的事情 当您拥有本质上仅在该组件内部需要的配置值 只是一个常量值 从未传入或修改 时 您可以只使用常规const或者您可以将其存储在组件的状态中 标准变量 function Exa
  • 附加到 Visual Studio Express 2013 for Web 中的进程

    我刚刚从 VS 2010 professional 升级到 VS 2013 Express for Web 但找不到 附加到进程 选项 该选项允许我调试托管在 IIS Web 服务器上的 Web 应用程序 该选项在 Windows 版 VS
  • 为什么 .Net 中的类默认不可序列化?

    开发人员必须通过显式使用来 选择 使类可序列化SerializableAttribute 如果类默认是可序列化的 会出现什么问题 我假设默认情况下类是不可序列化的 因为无法保证使用反射将对象的状态转储到流中是否有意义 如果您的对象拥有与数据
  • 在已弃用的 THREE.ImageUtils.loadTexture 上使用 THREE.TextureLoader 时出现纹理问题

    我正在使用这个函数在圆柱体上添加纹理 function createElementMaterial THREE ImageUtils crossOrigin var t THREE ImageUtils loadTexture IMG MA