Home  >  Article  >  Web Front-end  >  Examples to explain Three.js loading external models

Examples to explain Three.js loading external models

小云云
小云云Original
2017-12-22 11:26:116101browse

This article mainly introduces the detailed tutorial of Three.js external model loading. In the article, I will provide you with a supplementary introduction to the three.js external model loading json method. It is very good and has reference value. Friends who need it can refer to it. I hope Can help everyone.

1. First we need to download our three.js compressed package from the official website: https://threejs.org/, and import the three.js in the build folder through the src attribute of the script tag pair Go to our page

2. Create three.js core objects

Scene

Camera

Light

Mesh (model)

Renderer (renderer)

The last step is to render and display it on our page renderer.render(scene,camera)

3. Import of OBJ model


<script type="text/javascript" src="js/OBJLoader.js"></script>
 <script type="text/javascript" src="js/MTLLoader.js"></script>

4. Import of .JS model

First we need to. The OBJ model file is converted into a .JS file model

. The .obj format is converted to the .js format using the convert_obj_three.py tool officially provided by threejs.org. The use of this tool requires the installation of a python environment

Conversion process:

Place convert_obj_three.py and the .obj file and .mtl file to be converted in the same directory

Open cmd, switch to the corresponding directory


python convert_obj_three.py -i infile.obj -o outfile.js [-t ascii|binary]

You can get the .js file in two encoding methods (binary and ascii)

Problems that arise, Conversion format problem:

Open the .obj file,

Change the mtllib keyword to the path of the .mtl file relative to the .obj file

Change these ? in the file into letters and garbled characters

The newmtl in the .mtl file is associated with the .obj file

##This is

5 in the .obj file. Prepare to import

Ascii

Binary

Need to import


<script src="js/BinaryLoader.js"></script>

PS: three.js External model loading json

Using blender to make models can directly export json files (the export plug-in can be found in the three.js package). Download the model from the Internet. Many of the models on the Internet are made with 3ds max. I use 3ds max to convert the model format into obj, then import it into blender to process the model and export the json file.

When exporting the json file, the option is checked. If SCENE is selected, the lights can be exported together. When loading, ObjectLoader is required.


var loader = new THREE.ObjectLoader(); 
loader.load(&#39;youscene1.json&#39;,function(obj){ 
  obj.scale.x = obj.scale.y = obj.scale.z =100; 
  scene.add(obj); 
});

If the option is not checked when exporting the json file, Select scene. You need to add lights to the page, otherwise the model will be completely black. Use JSONLoader when loading.


var loader = new THREE.JSONLoader(); 
      loader.load( "noscene.json",function( geometry, materials ) { 
        materials[ 0 ].shading = THREE.FlatShading; 
        mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) ); 
        mesh.position.x = 0; 
        mesh.position.y = 0; 
        mesh.position.z = 0; 
        mesh.scale.x = mesh.scale.y = mesh.scale.z =100; 
        scene.add( mesh ); 
      });

Have you learned how? Hurry up and give it a try.


Related recommendations:

Detailed explanation of three.js local running methods

Three.js uses the performance plug-in stats to achieve performance Detailed explanation of monitoring instances

How to create a scene in Three.js

The above is the detailed content of Examples to explain Three.js loading external models. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn