reactjs - Using Three.js obj-loader in React -
in first try, used normal import node_modules , after minifided lib without success. in next step used older version of three. js library without changes. found out example whit imported three-obj-loader module , tried , still don`t know why in output objloader not constructed, function. many help.
i`m importing loaders this
import ob './objloader'; import * 3 './three'; // var 3 = require('three/examples/js/loaders/objloader');// // var manager = new loadingmanager();// // var loader = new three.objloader( manager ); // import 'three'; // var loader = new objloader( manager); var objloader = require('three-obj-loader')(three) var manager = new th.loadingmanager(); manager.onprogress = function ( item, loaded, total ) { console.log( item, loaded, total ); }; // model // var loader = new ob( manager ); in function export function loadmodelobj( path ) { return new promise( ( resolve, reject ) => { loader.load( path, resolve, () => null, error => reject ); }); } with webpack setup:
var webpack = require('webpack'); var path = require('path'); module.exports = { devtool: 'inline-source-map', entry: { main: './src/client.js' }, module: { loaders: [ { test: /\.js?$/, exclude: /node_modules/, loaders: [ 'babel', 'eslint-loader' ] }, { test: /\.json$/, loader: 'file' }, { test: /\.jpg$/, loader: 'file' }, { test: /\.obj$/, loader: 'file' }, { test: /\.scss$/, loaders: [ 'style', 'css', 'sass' ] } ] }, plugins:[ new webpack.provideplugin({ 'three': 'three' }), ], progress: true, resolve: { extensions: ['', '.json', '.js'], alias: { 'three/orbitcontrols': path.join(__dirname, 'node_modules/three/examples/js/controls/orbitcontrols.js'), 'three/objloader': path.join(__dirname, 'node_modules/three/examples/js/loaders/objloader.js') // ... } }, output: { path: 'build/', filename: 'bundle.js' } }; and packpage:
{ "scripts": { "start": "webpack-dev-server --content-base build" }, "dependencies": { "autobind-decorator": "^1.3.3", "babel-core": "^6.7.6", "babel-loader": "^6.2.1", "babel-plugin-add-module-exports": "^0.1.2", "babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-plugin-transform-runtime": "^6.9.0", "babel-preset-es2015": "^6.3.13", "babel-preset-react": "^6.3.13", "babel-preset-stage-0": "^6.3.13", "babel-register": "^6.3.13", "babel-runtime": "^6.3.19", "css-loader": "^0.23.1", "file-loader": "^0.8.5", "json-loader": "^0.5.4", "node-sass": "^3.7.0", "react": "^15.3.1", "react-dom": "^15.1.0", "react-three-renderer": "^3.2.1", "sass-loader": "^3.2.0", "style-loader": "^0.13.1", "three": "^0.84.0", "three-obj-loader": "^1.1.2" }, "devdependencies": { "babel-eslint": "^6.0.4", "babel-plugin-react-transform": "^2.0.0", "clean-webpack-plugin": "^0.1.6", "eslint": "^2.10.2", "eslint-loader": "^1.3.0", "eslint-plugin-import": "^1.8.0", "eslint-plugin-react": "^5.1.1", "webpack": "^1.12.9", "webpack-dev-server": "^1.14.1" } } i followed examples:
using webpack, threejs examples, , typescript?
what proper way three.js used within webpack can use orbitcontrols?
i had similar issue, looks you're not importing correctly. if have npm packages installed don't need import them './' works me:
import react, { component } 'react'; import * 3 'three'; import react3 'react-three-renderer'; import objloader 'three-obj-loader'; objloader(three); then in constructor method of react class, call
var loader = new three.objloader(); from there should able console.log(loader) , see three.objloader function in console.
let me know if helps!
Comments
Post a Comment