当前位置:网站首页>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>
边栏推荐
- Cocos uses custom material to display problems
- Actually changed from 408 to self proposition! 211 North China Electric Power University (Beijing)
- 2. Basic knowledge of golang
- Webgl texture
- 避坑:Sql中 in 和not in中有null值的情况说明
- MySQL bit type resolution
- [follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code
- How to build your own super signature system (yunxiaoduo)?
- Streaming end, server end, player end
- Mesh merging under ue4/ue5 runtime
猜你喜欢
从 1.5 开始搭建一个微服务框架链路追踪 traceId
Keil5 does not support online simulation of STM32 F0 series
unnamed prototyped parameters not allowed when body is present
【数字IC验证快速入门】25、SystemVerilog项目实践之AHB-SRAMC(5)(AHB 重点回顾,要点提炼)
[Data Mining] Visual Pattern Mining: Hog Feature + cosinus Similarity / K - means Clustering
Virtual memory, physical memory /ram what
2. Heap sort "hard to understand sort"
使用cpolar建立一个商业网站(2)
Briefly describe the working principle of kept
[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset
随机推荐
Webcodecs parameter settings -avc1.42e01e meaning
Window环境下配置Mongodb数据库
HW初级流量监控,到底该怎么做
【数字IC验证快速入门】18、SystemVerilog学习之基本语法5(并发线程...内含实践练习)
Pit avoidance: description of null values in in and not in SQL
How to deploy the super signature distribution platform system?
Actually changed from 408 to self proposition! 211 North China Electric Power University (Beijing)
OpenGL common functions
[original] all management without assessment is nonsense!
Mathematical modeling -- what is mathematical modeling
The bank needs to build the middle office capability of the intelligent customer service module to drive the upgrade of the whole scene intelligent customer service
15. Using the text editing tool VIM
[quick start of Digital IC Verification] 19. Basic grammar of SystemVerilog learning 6 (thread internal communication... Including practical exercises)
How to build your own super signature system (yunxiaoduo)?
XMIND frame drawing tool
webgl_ Enter the three-dimensional world (1)
webgl_ Enter the three-dimensional world (2)
UE4 exports the picture + text combination diagram through ucanvasrendertarget2d
Do not use memset to clear floating-point numbers
Detailed explanation of unity hot update knowledge points and introduction to common solution principles