首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >three.js OBJLoader未加载反应

three.js OBJLoader未加载反应
EN

Stack Overflow用户
提问于 2017-07-19 13:11:22
回答 3查看 5.8K关注 0票数 7

我正在尝试加载一个对象(.obj)文件,以便与three.js一起使用,并使用react -三重呈现器,但得到一个My代码如下:

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import React3 from 'react-three-renderer';
import TrackballControls from './TrackballControls';
import * as THREE from 'three';
import * as OBJLoader from 'three-obj-loader';
OBJLoader(THREE);

class MyClass extends React.Component {
...
  render() {
    ...
    const objLoader = new THREE.OBJLoader();
  }
}

然而,我一直在说:“导出'OBJLoader‘(作为’3‘导入)在’三‘中没有找到有想法的人吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-22 19:18:10

因此,将this.THREE = THREE添加到react组件中似乎很有意义(奇怪,是吧?)。所以我的代码现在看起来是:

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import React3 from 'react-three-renderer';
import TrackballControls from './TrackballControls';
import * as THREE from 'three';
import * as OBJLoader from 'three-obj-loader';
OBJLoader(THREE);

class MyClass extends React.Component {
...
  render() {
    ...
    this.THREE = THREE;
    const objLoader = new this.THREE.OBJLoader();
  }
}
票数 8
EN

Stack Overflow用户

发布于 2019-06-27 02:46:33

OBJLoader现在是核心three.js库的一部分,所以只需执行以下操作就可以访问它:

代码语言:javascript
复制
 const objLoader = new THREE.OBJLoader();

移除线条时:

代码语言:javascript
复制
import * as OBJLoader from 'three-obj-loader';
OBJLoader(THREE);

因为您已经在代码中导入了three.js库。

票数 0
EN

Stack Overflow用户

发布于 2019-12-10 21:41:28

更新2019年使用"three-obj-mtl-loader"而不是'three-obj-loader'

代码语言:javascript
复制
  import { MTLLoader, OBJLoader } from "three-obj-mtl-loader";

利用该方法对材料和OBJ模型进行加载。

代码语言:javascript
复制
   /**
   * Load and Display OBJ Model
   */
  loadObjModel = (materialURL, objectURL) => {
    new MTLLoader().load(materialURL, materials => {
      materials.preload();
      //materials.Material.side = THREE.DoubleSide;
      console.log("Loaded Materials");
      var objLoader = new OBJLoader();
      objLoader.setMaterials(materials);
      objLoader.load(
        objectURL,
        object => {
          //const root = object.detail.loaderRootNode;
          console.log("Loaded Obj" + object);
          let mesh = object;
          this.scene.add(object);
          mesh.position.set(0, 0, 0);
          mesh.scale.set(0.07, 0.07, 0.07);
        },
        xhr => {
          console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
        },
        // called when loading has errors
        error => {
          console.log("An error happened" + error);
        }
      );
    });
  };

用这样的材料加载obj模型

this.loadObjModel("./assets/windmill-fixed.mtl",“./assets/winmill.obj”);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45191676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档