当前位置:网站首页>Three. JS introductory learning notes 04: external model import - no material obj model
Three. JS introductory learning notes 04: external model import - no material obj model
2022-07-07 15:48:00 【Jiang Duoduo_ Mostly Harmless 】
Reference learning :
Three.js Getting started
https://www.ituring.com.cn/book/miniarticle/53810
External model import supports formats
External file import auxiliary function download address
https://github.com/mrdoob/three.js/tree/master/examples/js/loaders
*.obj Is the most commonly used model format , Import *.obj Documentation needs OBJLoader.js; Lead in belt *.mtl The material *.obj Documentation needs MTLLoader.js as well as OBJMTLLoader.js. have other PLYLoader.js、STLLoader.js And other loaders corresponding to different formats , You can choose according to the model format .
Currently supported formats :
- *.obj
- *.obj, *.mtl
- *.dae
- *.ctm
- *.ply
- *.stl
- *.wrl
- *.vtk
Model without material
3ds max export obj The effect of the file on the page :
C4D export obj The effect of the file on the page :

download OBJLoader.js And in HTML Of <head> Use in :
<script type="text/javascript" src="OBJLoader.js"></script>
1. use 3ds max Build a teapot model , Put it at the origin , radius 3, This unit and three.js The units in the scene are consistent .
2. Export to port.obj
choice Export materials, A with the same name will be generated *.mtl file .
No election , Just don't export materials
3. Structure and path
structure 


Corresponding path 

My version , Short code
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>3d_camera</title>
<script type="text/javascript" src="js/three.js"></script>
<script type="text/javascript" src="js/OBJLoader.js"></script>
</head>
<body>
<script type="text/javascript">
//renderer
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800, 600);
document.getElementsByTagName("body")[0].appendChild(renderer.domElement);
//scene
var scene = new THREE.Scene();
//camera
camera = new THREE.OrthographicCamera(-5, 5, 3.75, -3.75, 0.1, 100);
camera.position.set(15, 25, 25);
camera.lookAt(new THREE.Vector3(0, 2, 0));
scene.add(camera);
//model
var loader = new THREE.OBJLoader();
loader.load('model/cubenew2.obj', function(obj) {
mesh = obj; // Stored in global variables
scene.add(obj);
});
//light
var light = new THREE.DirectionalLight(0xffffff);
light.position.set(20, 10, 5);
scene.add(light);
id = setInterval(draw, 20);
function draw() {
renderer.render(scene, camera);
mesh.rotation.y += 0.01;
if (mesh.rotation.y > Math.PI * 2) {
mesh.rotation.y -= Math.PI * 2;
}
}
</script>
</body>
</html>
If you want to stay still, you can write the animation as
function draw() {
renderer.render(scene, camera);
}
I've tried, 3ds max export obj A teapot , and C4D Export cubes can be loaded , Export with or without materials , Just put obj Just load the file of .
Adjusting the size and world coordinates in the software also affects the size and position loaded in the web page .
The above model 3ds max The unit length of the teapot is 3,C4D Exported is 1cm about . The world coordinates are (0,0,0)
The problem remains to be solved :
1. Why add one draw function , If you remove it, you can't see the model ?
2. Export a larger obj The model cannot be loaded , Only the black render area , I don't know whether it's a model problem or a code problem
Tutorial code
https://github.com/Ovilia/ThreeExample.js/blob/master/Chapter7/7.2.1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script type="text/javascript" src="js/three.js"></script>
<script type="text/javascript" src="js/OBJLoader.js"></script>
</head>
<body>
<script type="text/javascript">
var scene = null;
var camera = null;
var renderer = null;
var mesh = null;
var id = null;
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800, 600);
document.getElementsByTagName("body")[0].appendChild(renderer.domElement);
renderer.setClearColor(0x000000);
scene = new THREE.Scene();
camera = new THREE.OrthographicCamera(-5, 5, 3.75, -3.75, 0.1, 100);
camera.position.set(15, 25, 25);
camera.lookAt(new THREE.Vector3(0, 2, 0));
scene.add(camera);
var loader = new THREE.OBJLoader();
loader.load('model/port2.obj', function(obj) {
obj.traverse(function(child) {
if (child instanceof THREE.Mesh) {
child.material.side = THREE.DoubleSide;
}
});
mesh = obj;
scene.add(obj);
});
var light = new THREE.DirectionalLight(0xffffff);
light.position.set(20, 10, 5);
scene.add(light);
id = setInterval(draw, 20);
function draw() {
renderer.render(scene, camera);
mesh.rotation.y += 0.01;
if (mesh.rotation.y > Math.PI * 2) {
mesh.rotation.y -= Math.PI * 2;
}
}
</script>
</body>
</html>
边栏推荐
- Create lib Library in keil and use lib Library
- How to understand that binary complement represents negative numbers
- Vertex shader to slice shader procedure, varying variable
- [quickstart to Digital IC Validation] 20. Basic syntax for system verilog Learning 7 (Coverage Driven... Including practical exercises)
- LeetCode2_ Add two numbers
- 【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动...内含实践练习)
- Starting from 1.5, build a microservice framework link tracking traceid
- [quick start for Digital IC Validation] 26. Ahb - sramc (6) for system verilog project practice (Basic Points of APB Protocol)
- 【搞船日记】【Shapr3D的STL格式转Gcode】
- HPDC smart base Talent Development Summit essay
猜你喜欢

微信小程序 01

Cocos uses custom material to display problems
![[data mining] visual pattern mining: hog feature + cosine similarity /k-means clustering](/img/a4/7320f5d266308f6003cc27964e49f3.png)
[data mining] visual pattern mining: hog feature + cosine similarity /k-means clustering
![[quick start of Digital IC Verification] 18. Basic grammar of SystemVerilog learning 5 (concurrent threads... Including practical exercises)](/img/91/16a370ac41adc8fe31507765a82b0a.png)
[quick start of Digital IC Verification] 18. Basic grammar of SystemVerilog learning 5 (concurrent threads... Including practical exercises)

Do you know the relationship between the most important indicators of two strong wind control and the quality of the customer base

Mesh merging under ue4/ue5 runtime

2. Heap sort "hard to understand sort"

Ue4/ue5 multi thread development attachment plug-in download address

Write sequence frame animation with shader
![[quick start of Digital IC Verification] 24. AHB sramc of SystemVerilog project practice (4) (AHB continues to deepen)](/img/cf/45775b712f60869186a25d3657ee1b.png)
[quick start of Digital IC Verification] 24. AHB sramc of SystemVerilog project practice (4) (AHB continues to deepen)
随机推荐
有钱人买房就是不一样
【原创】一切不谈考核的管理都是扯淡!
There is a cow, which gives birth to a heifer at the beginning of each year. Each heifer has a heifer at the beginning of each year since the fourth year. Please program how many cows are there in the
Detailed explanation of Cocos creator 2.4.0 rendering process
Webcodecs parameter settings -avc1.42e01e meaning
HPDC smart base Talent Development Summit essay
How to create Apple Developer personal account P8 certificate
What are the safest securities trading apps
The significance of XOR in embedded C language
[quick start of Digital IC Verification] 25. AHB sramc of SystemVerilog project practice (5) (AHB key review, key points refining)
Matlab experience summary
[Data Mining] Visual Pattern Mining: Hog Feature + cosinus Similarity / K - means Clustering
MongoD管理数据库的方法介绍
A wave of open source notebooks is coming
Database exception resolution caused by large table delete data deletion
一大波开源小抄来袭
Oracle控制文件丢失恢复归档模式方法
Use of SVN
【Markdown语法高级】让你的博客更精彩(四:设置字体样式以及颜色对照表)
2022全开源企业发卡网修复短网址等BUG_2022企业级多商户发卡平台源码