位置: IT常识 - 正文

Three.js一学就会系列:05 加载3D模型(three.js入门指南)

编辑:rootadmin
Three.js一学就会系列:05 加载3D模型 系列文章目录

推荐整理分享Three.js一学就会系列:05 加载3D模型(three.js入门指南),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:three.js bim,three.js 教程,three.js中文教程,three.js webgl,three.js入门指南,three.js 教程,three.js入门指南,three.js入门指南,内容如对您有帮助,希望把文章链接给更多的朋友!

Three.js一学就会系列:01 第一个3D网站 Three.js一学就会系列:02 画线 Three.js一学就会系列:03 炫酷3D划线 Three.js一学就会系列:04 炫酷3D文字

文章目录系列文章目录前言一、核心代码讲解引入插件轨道控制器加载3D文件完整代码效果二、3D模型资源总结前言

最近开始入坑前端3D建站,跟大家一起慢慢深入three.js做网站3D

这篇文章给大家讲下 如何加载一个3D模型

一、核心代码讲解引入插件 import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'Three.js一学就会系列:05 加载3D模型(three.js入门指南)

GLTFLoader : 加载GLTF加载器,glTF(gl传输格式)是一种开放格式的规范 (open format specification), 用于更高效地传输、加载3D内容。该类文件以JSON(.gltf)格式或二进制(.glb)格式提供, 外部文件存储贴图(.jpg、.png)和额外的二进制数据(.bin) OrbitControls : 轨道控制器(OrbitControls)Orbit controls(轨道控制器)可以使得相机围绕目标进行轨道运动。 DRACOLoader : 一个加载器的几何压缩与Draco库。Draco是一个开源库,用于压缩和解压缩3D网格和点云。压缩后的几何图形可以显著变小,代价是在客户端设备上花费额外的解码时间。

轨道控制器this.controls = new OrbitControls(camera, renderer.domElement)this.controls.target = new THREE.Vector3(0, 0, 0)

controls.target:设置控制器的焦点,.object的轨道围绕它运行

加载3D文件const loader = new GLTFLoader()const dracoLoader = new DRACOLoader()dracoLoader.setDecoderPath('https://threejs.org/examples/jsm/libs/draco/')dracoLoader.preload()loader.setDRACOLoader(dracoLoader)loader.load('https://threejs.org/examples/models/gltf/LittlestTokyo.glb', (gltf) => { scene.add(gltf.scene) renderer.render(scene, camera)}, (xhr) => { console.log((xhr.loaded / xhr.total) * 100 + '% loaded')}, (error) => { console.error(error)})

setDecoderPath:设置draco文件地址 loader.load(‘https://threejs.org/examples/models/gltf/LittlestTokyo.glb’) 加载3D模型

完整代码<template> <section> <section id="container"></section> </section></template><script> import * as THREE from 'three' import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader' let camera, scene, renderer export default { data() { return { } }, mounted() { this.init() this.animate() }, methods: { init() { const container = document.getElementById('container') camera = new THREE.PerspectiveCamera(90, container.clientWidth / container.clientHeight, 0.1, 10000) renderer = new THREE.WebGLRenderer({ antialias: true }) camera.position.set(50, 200, 500) scene = new THREE.Scene() renderer.setClearColor(new THREE.Color(0xF7F2F1)) renderer.setSize(container.clientWidth, container.clientHeight) renderer.shadowMap.enabled = true container.appendChild(renderer.domElement) this.controls = new OrbitControls(camera, renderer.domElement) this.controls.target = new THREE.Vector3(0, 0, 0) this.loadLight() this.load3D() }, load3D() { const loader = new GLTFLoader() const dracoLoader = new DRACOLoader() dracoLoader.setDecoderPath('https://threejs.org/examples/jsm/libs/draco/') dracoLoader.preload() loader.setDRACOLoader(dracoLoader) loader.load('https://threejs.org/examples/models/gltf/LittlestTokyo.glb', (gltf) => { scene.add(gltf.scene) renderer.render(scene, camera) }, (xhr) => { console.log((xhr.loaded / xhr.total) * 100 + '% loaded') }, (error) => { console.error(error) }) }, loadLight() { // 环境光 const ambient = new THREE.AmbientLight(0xFFFFFF) scene.add(ambient) const pointLight = new THREE.PointLight( 0xffffff, 0.5 ); pointLight.position.set( 100, 200, 500 ); pointLight.color.setHSL( 255, 255, 255 ); scene.add( pointLight ); }, animate() { requestAnimationFrame(this.animate) renderer.render(scene, camera) } } }</script><style>body,html { padding: 0; margin: 0;}</style><style scoped> #container { width: 100%; height: calc(100vh); }</style>效果

二、3D模型资源

公共领域的glTF文件可以在网上找到,例如 Sketchfab,或者很多工具包含了glTF的导出功能: Blender by the Blender Foundation Substance Painter by Allegorithmic Modo by Foundry Toolbag by Marmoset Houdini by SideFX Cinema 4D by MAXON COLLADA2GLTF by the Khronos Group FBX2GLTF by Facebook OBJ2GLTF by Analytical Graphics Inc

更多请参考:https://threejs.org/docs/index.html#manual/zh/introduction/Loading-3D-models

总结

以上就是今天要讲的内容,本文仅仅简单介绍了three.js的加载3D模型,而three.js提供了非常多的3D显示功能,后续文章,我将带大家慢慢深入了解。

如果觉得有用欢迎点赞关注 有问题私信我!!~~

本文链接地址:https://www.jiuchutong.com/zhishi/300390.html 转载请保留说明!

上一篇:深度学习之快速实现数据集增强的方法

下一篇:DEFORMABLE DETR详解(deformable detr代码)

  • 企业卖车交税怎么算的
  • 税负率是含税还是不含税
  • 合并后税务局的全称是什么
  • 应收账款待转销和应交税费待转销
  • 开广告公司需要营业执照吗
  • 车位出售时要交什么税
  • 现金支付用什么科目
  • 从农民个人手里获取资源
  • 增值税专用发票有效期是多长时间
  • 已抵扣进项税额的购进货物或者应税劳务
  • 关于抄税的详细介绍
  • 小规模计提税金及附加怎么算
  • 团建费用是什么意思
  • 销售库存商品的记账凭证
  • 文化交流活动开展方案
  • 税务发票原件
  • 小规模纳税人月销售额不超过10万免征
  • 原材料损失分录
  • 桌面或文件夹内无图标
  • 如何正确使用储存卡
  • 为离职员工代缴社保 论
  • 有一个设置
  • 企业以租代购的利弊分析
  • 想要探究的问题
  • 所得税和所得税税率
  • 固定资产如何做账务处理
  • 与取得收入无关的成语
  • php用img显示图片
  • 稿酬所得计入什么科目
  • 企业生产经营管理费用包括
  • css盒子如何居中
  • django pypi
  • 残疾人就业保障金怎么申报
  • 煤矿安全费用提取规定
  • php gdb
  • 电子回单是什么样子
  • 行政性罚款怎么结转损益
  • 小规模纳税人应交税费会计分录
  • 当月增加的固定资产当月不计提折旧
  • phpcms文档
  • PHPCMS num 参数是什么意思?
  • 织梦艺嫣跳舞
  • 其他应付款转实收资本走什么程序
  • 企业向个人借款合同模板
  • 企业进行成本核算时,应根据生产经营特点
  • 捐赠的增值税可以抵扣吗
  • 建筑服务的劳务费交印花税吗
  • 部分红冲的发票无法勾选怎么办
  • 商贸企业增值税税负率低于1%则存在涉税问题
  • 科研经费的间接费用会审核吗
  • 企业设备融资是什么意思?
  • etc的充值发票可以报账吗
  • 安置房买卖过户流程
  • 申请个税退税账号是什么
  • 事业单位利息收入
  • 主营业务成本的贷方是什么
  • 主营业务收入减少记哪方
  • 公司基本户可以取现金吗
  • centos中rpm包怎么安装
  • Navicat连接MySQL报错
  • linux系统中的用户大体可分为三组
  • win10如何恢复
  • windows10周年纪念版
  • Mac OSX通过homebrew卸载formula的方法
  • centos安装ufw
  • mac itunes在哪儿
  • centos sh
  • w10系统怎么压缩
  • win7系统纯净版64位无法修改窗口颜色怎么办?Win7窗口颜色修改详细步骤
  • 滚小球的实验过程和材料
  • 权作记录 cocos2dx
  • JavaScript中的变量名不区分大小写
  • shell脚本生成文件
  • javascript查询
  • 如何用jquery
  • android零基础入门教程
  • 单位没有缴纳个人医保
  • 国家税务局扬州 袁霞
  • 彩票中奖归出钱人还是中奖人
  • 陕西税务局如何缴纳社保
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设