位置: 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代码)

  • 苹果7p主板漏电症状(苹果笔记本电池不充电怎么回事)

    苹果7p主板漏电症状(苹果笔记本电池不充电怎么回事)

  • 爱奇艺会员最多可以几个人用(爱奇艺会员最多可以共享几台)

    爱奇艺会员最多可以几个人用(爱奇艺会员最多可以共享几台)

  • 电源总闸推不上去(电源总闸推不上去是什么原因)

    电源总闸推不上去(电源总闸推不上去是什么原因)

  • 16开头的手机号是哪的(16开头的手机号码是不是正规的)

    16开头的手机号是哪的(16开头的手机号码是不是正规的)

  • 荣耀v30pro充电发热正常吗(荣耀v30充电时发烫)

    荣耀v30pro充电发热正常吗(荣耀v30充电时发烫)

  • 公众号怎么做推广(公众号怎么做推荐阅读的图片)

    公众号怎么做推广(公众号怎么做推荐阅读的图片)

  • 快手怎么打开原声播放(快手怎么打开原色彩)

    快手怎么打开原声播放(快手怎么打开原色彩)

  • 微信公众号可以看到谁阅读了吗(微信公众号可以设置几个管理员)

    微信公众号可以看到谁阅读了吗(微信公众号可以设置几个管理员)

  • 什么叫脉冲(什么叫脉冲射频治疗)

    什么叫脉冲(什么叫脉冲射频治疗)

  • 苹果不显示4g(苹果不显示4g网络)

    苹果不显示4g(苹果不显示4g网络)

  • excel怎么求和一整列(EXCEL怎么求和一整列)

    excel怎么求和一整列(EXCEL怎么求和一整列)

  • IP地址和物理地址、DNS域名的区别及相互关系(ip地址和物理地址的作用)

    IP地址和物理地址、DNS域名的区别及相互关系(ip地址和物理地址的作用)

  • 云计算有哪几种部署模型(云计算有哪几种服务类型)

    云计算有哪几种部署模型(云计算有哪几种服务类型)

  • vivos5怎样截屏(vivos5怎么截屏几种方法)

    vivos5怎样截屏(vivos5怎么截屏几种方法)

  • usb-c和typec接口一样吗(usbc接口和 typec接口区别)

    usb-c和typec接口一样吗(usbc接口和 typec接口区别)

  • 微信群被停用多久解封(微信群停用多久能恢复)

    微信群被停用多久解封(微信群停用多久能恢复)

  • 耳机插主机后面哪个孔(耳机插主机后面几米长)

    耳机插主机后面哪个孔(耳机插主机后面几米长)

  • 安卓手机如何去除锁屏广告(安卓手机如何去水印)

    安卓手机如何去除锁屏广告(安卓手机如何去水印)

  • 计算机中媒体主要是指什么(媒体计算机中所说的媒体主要是指)

    计算机中媒体主要是指什么(媒体计算机中所说的媒体主要是指)

  • win11系统黑屏怎么办?解决win11黑屏的方法步骤(win11进入黑屏)

    win11系统黑屏怎么办?解决win11黑屏的方法步骤(win11进入黑屏)

  • 六月雪的养殖方法,六月雪盆景怎么养(六月雪的养殖方法和注意事项)

    六月雪的养殖方法,六月雪盆景怎么养(六月雪的养殖方法和注意事项)

  • dedecms织梦制作xml网站地图的方法(如何用织梦在本地搭建网站)

    dedecms织梦制作xml网站地图的方法(如何用织梦在本地搭建网站)

  • 民营医院一般纳税人帐务处理视频税收风险
  • 财会英语汇总:税收术语?
  • 税控盘维护费280多久可以抵扣
  • 增值税发票的红章压到金额没有关系吧
  • 合营企业和联营企业的持股比例
  • etc发票开票中
  • 工程施工的保障措施
  • 筹建期土地使用税分录
  • 公司给员工发的工资要交税吗
  • 请问什么是全员安全生产责任制
  • 房地产预缴增值税税率是多少
  • 网络科技公司会计核算及账务处理
  • 小企业怎么申请建设用地
  • 汇算清缴发票可以做费用票吗
  • 1697510710
  • 如何看云空间的内容
  • 上年度的费用今年怎么算
  • 物业公司营业成本包括哪些
  • rmb转
  • 充值会员卡销售话语
  • QQPCTray.exe是什么进程 QQPCTray.exe文件介绍
  • 一般纳税人做账报税的整个流程详细
  • php字符串型数据的定义方式
  • php ado
  • 发票支票区别
  • 发票抵扣条件
  • 世界上最早的数码相机
  • PHP:iconv_mime_decode()的用法_iconv函数
  • 广告费增值税税目是什么
  • 开发商卖房子要交多少营业税
  • html中a标签怎么引用图片
  • 用友自动生成凭证怎么操作
  • ai绘画图片
  • matlab中自由变量
  • react+go
  • php实现评论回复功能
  • 销售边角料的会计分录
  • 教育费附加减免政策
  • 外购产品的会计分录
  • php判断是否为整数
  • el-form表单
  • 金蝶标准版怎么查应收应付款
  • 什么样的差旅费津贴可以税前扣除
  • 小企业长期债券投资损失应当计入
  • 新增项目和延续项目
  • 房地产企业的会计科目设置
  • 收到现金怎么记账凭证
  • 企业筹办费计入什么科目
  • 多交的税费申请抵扣下期
  • 售后维修费会计分录
  • 加油充值卡有优惠吗
  • 融资手续费计入什么成本
  • 暂估入库的材料领用时如何做账
  • 申报财产租赁合同怎么写
  • 应付账款在贷方负数
  • 销售商品未开票
  • 物流托运不给发货
  • sql server自定义类型怎么写入备机
  • mysql mod
  • 一个 sql 查询很慢,从哪些地方进行优化?
  • centos sh
  • linux检查文件内容
  • redhat配置
  • 安装win7系统后无法引导启动
  • win7安装office2016报错
  • win1020h2正式版下载
  • win7系统电脑卡住了怎么办
  • perl -pi
  • javascript数据结构
  • linux查看远程服务是否开启
  • shell脚本wc
  • jquery modal 弹窗
  • js图片浏览器
  • python 隐函数作图
  • 重庆税务总局发票查询
  • 山东省税务局网上办税服务厅
  • 税务总局各司领导名单
  • 鸿蒙2.0哪个版本续航好
  • 公司有房屋租赁许可证吗
  • 滨州税务局公务员工资
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设