当前位置:网站首页>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>
边栏推荐
- VS2005 strange breakpoint is invalid or member variable value cannot be viewed
- 【數字IC驗證快速入門】26、SystemVerilog項目實踐之AHB-SRAMC(6)(APB協議基本要點)
- What are PV and UV? pv、uv
- Virtual memory, physical memory /ram what
- Spin animation of Cocos performance optimization
- Write a ten thousand word long article "CAS spin lock" to send Jay's new album to the top of the hot list
- 【數據挖掘】視覺模式挖掘:Hog特征+餘弦相似度/k-means聚類
- Runnable是否可以中断
- Clang compile link ffmpeg FAQ
- Cocos uses custom material to display problems
猜你喜欢
Introduction of mongod management database method

Use of SVN

Zhongang Mining: Fluorite continues to lead the growth of new energy market
使用Scrapy框架爬取网页并保存到Mysql的实现

LeetCode1_ Sum of two numbers

【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AMBA总线介绍)
![[quick start of Digital IC Verification] 29. Ahb-sramc (9) (ahb-sramc svtb overview) of SystemVerilog project practice](/img/f7/03975d08912afd8daee936799e8951.png)
[quick start of Digital IC Verification] 29. Ahb-sramc (9) (ahb-sramc svtb overview) of SystemVerilog project practice

Ida Pro reverse tool finds the IP and port of the socket server
![[quick start of Digital IC Verification] 22. Ahb-sramc of SystemVerilog project practice (2) (Introduction to AMBA bus)](/img/3f/40475f9f6e0fcd3f58c93164f65674.png)
[quick start of Digital IC Verification] 22. Ahb-sramc of SystemVerilog project practice (2) (Introduction to AMBA bus)
![[deep learning] image hyperspectral experiment: srcnn/fsrcnn](/img/84/114fc8f0875b82cc824e6400bcb06f.png)
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
随机推荐
【数字IC验证快速入门】24、SystemVerilog项目实践之AHB-SRAMC(4)(AHB继续深入)
Tkinter after how to refresh data and cancel refreshing
【數據挖掘】視覺模式挖掘:Hog特征+餘弦相似度/k-means聚類
Use cpolar to build a business website (2)
[Data Mining] Visual Pattern Mining: Hog Feature + cosinus Similarity / K - means Clustering
STM32F103C8T6 PWM驱动舵机(SG90)
It's different for rich people to buy a house
How to understand that binary complement represents negative numbers
居然从408改考自命题!211华北电力大学(北京)
有钱人买房就是不一样
The rebound problem of using Scrollview in cocos Creator
Mathematical modeling -- what is mathematical modeling
[quick start of Digital IC Verification] 20. Basic grammar of SystemVerilog learning 7 (coverage driven... Including practical exercises)
The significance of XOR in embedded C language
Connecting FTP server tutorial
Basic knowledge sorting of mongodb database
The "go to definition" in VS2010 does not respond or prompts the solution of "symbol not found"
Excerpted words
OpenGL's distinction and understanding of VAO, VBO and EBO
Pit avoidance: description of null values in in and not in SQL