当前位置:网站首页>Threejs Internet of things, 3D visualization of farms (II)
Threejs Internet of things, 3D visualization of farms (II)
2022-07-05 04:02:00 【Zuo Ben】
1, Introduce
This example uses r95 edition Three.js library .
Main functions : Quote the farm model for display . The renderings are as follows :

2, Main description
farm 3D Show main use OBJLoader and MTLLoader Load the model and directly assign materials to display .
The imported model code is as follows :

3, Source code
var camera;
var renderer;
var mesh;
function init() {
// Create a scene , It will contain all our elements , Like an object , Cameras and lights .
var scene = new THREE.Scene();
var urls = [
'assets/textures/posx.jpg',
'assets/textures/negx.jpg',
'assets/textures/posy.jpg',
'assets/textures/negy.jpg',
'assets/textures/posz.jpg',
'assets/textures/negz.jpg'
];
var cubeLoader = new THREE.CubeTextureLoader();
scene.background = cubeLoader.load(urls);
// Create a camera , It defines where we are looking
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 30000);
// Aim the camera at the center of the scene
camera.position.x = 5500;
camera.position.y = 3000;
camera.position.z = 2000;
camera.lookAt(scene.position);
var orbit = new THREE.OrbitControls(camera);
// Create a renderer and set the size ,WebGLRenderer The computer graphics card will be used to render the scene
// initialize basic renderer
renderer = new THREE.WebGLRenderer({
antialias: true,
logarithmicDepthBuffer: true,
});
renderer.setSize(window.innerWidth, window.innerHeight);
// Add ambient light
scene.add(new THREE.AmbientLight("#ffffff", 1.5));
// Add the output of the renderer to HTML Elements
document.getElementById("dom").appendChild(renderer.domElement);
// Display the coordinate axis on the screen
var axes = new THREE.AxesHelper(10000);
// scene.add(axes);
initModel();
// Start animation
renderScene();
// Add model
function initModel() {
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath("assets/models/obj_mtl/")
mtlLoader.load('yangzhichang.mtl', function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.load('assets/models/obj_mtl/yangzhichang.obj', function(object) {
mesh = object;
object.traverse(function(node) {
if (node.material) {
node.material.side = THREE.DoubleSide;
}
});
scene.add(mesh);
});
});
}
document.addEventListener('click', onDocumentMouseDown, false);
function onDocumentMouseDown(event) {
// Click on the screen to create a vector
var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window
.innerHeight) * 2 + 1, 0.5);
vector = vector.unproject(camera); // Convert the coordinates of the screen into coordinates in the 3D scene
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(mesh, true);
if (intersects.length > 0) {
var name = intersects[0].object.name;
var obj = scene.getObjectByName(name);
console.log(obj)
scene.remove(obj);
}
}
function renderScene() {
orbit.update();
requestAnimationFrame(renderScene);
renderer.render(scene, camera);
}
// Rendered scenes
renderer.render(scene, camera);
}
window.onload = init;4, download
Use threejs Rendering farm model source code , Farm model obj+mtl Format ,threejs Model , Model upgrade -Web Develop document resources -CSDN download Upgraded farm model , Use threejs Rendering model source code Threejs Rendering obj+mtl Model ,Threej More download resources 、 For learning materials, please visit CSDN Download channel .https://download.csdn.net/download/baidu_29701003/54824377 Need other source code 、 Please leave a message or contact me on wechat :1171053128
边栏推荐
- 长度为n的入栈顺序的可能出栈顺序种数
- IronXL for .NET 2022.6
- EasyCVR更改录像存储路径,不生成录像文件如何解决?
- WGS84 coordinate system, web Mercator, gcj02 coordinate system, bd09 coordinate system - brief introduction to common coordinate systems
- 根据入栈顺序判断出栈顺序是否合理
- 在线文本行固定长度填充工具
- grandMA2 onPC 3.1.2.5的DMX参数摸索
- Uni app common functions /api
- How to solve the problem that easycvr changes the recording storage path and does not generate recording files?
- The new project Galaxy token just announced by coinlist is gal
猜你喜欢

Uni app change the default component style

企业级:Spire.Office for .NET:Platinum|7.7.x

Web components series (VII) -- life cycle of custom components

Behavior perception system

Rust区块琏开发——签名加密与私钥公钥

ABP vNext microservice architecture detailed tutorial - distributed permission framework (Part 1)

行为感知系统

@The problem of cross database query invalidation caused by transactional annotation

Special Edition: spreadjs v15.1 vs spreadjs v15.0

error Couldn‘t find a package. JSON file in "your path“
随机推荐
Pyqt5 displays file names and pictures
DMX parameter exploration of grandma2 onpc 3.1.2.5
Plasticscm enterprise crack
@Transactional 注解导致跨库查询失效的问题
Threejs realizes sky box, panoramic scene, ground grass
Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
How about programmers' eyesight| Daily anecdotes
speed or tempo in classical music
Clickpaas low code platform
【看完就懂系列】一文6000字教你从0到1实现接口自动化
Installation of postman and postman interceptor
面试汇总:这是一份全面&详细的Android面试指南
特殊版:SpreadJS v15.1 VS SpreadJS v15.0
Three level linkage demo of uniapp uview u-picker components
An elegant program for Euclid‘s algorithm
为什么百度、阿里这些大厂宁愿花25K招聘应届生,也不愿涨薪5K留住老员工?
[vérification sur le Web - divulgation du code source] obtenir la méthode du code source et utiliser des outils
provide/inject
面试字节,过关斩将直接干到 3 面,结果找了个架构师来吊打我?
已解决(sqlalchemy+pandas.read_sql)AttributeError: ‘Engine‘ object has no attribute ‘execution_options‘