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

  • 苹果倒数日怎么弄(苹果倒数日怎么恢复数据)

    苹果倒数日怎么弄(苹果倒数日怎么恢复数据)

  • oppor15解锁闪一下白光(oppo手机解锁会闪一下)

    oppor15解锁闪一下白光(oppo手机解锁会闪一下)

  • 钉钉怎么提前录播(钉钉怎么提前录播课)

    钉钉怎么提前录播(钉钉怎么提前录播课)

  • 后压屏鉴别方法(后压屏怎么鉴别)

    后压屏鉴别方法(后压屏怎么鉴别)

  • 手机屏幕压tp是什么意思(手机屏幕压TP是什么意思)

    手机屏幕压tp是什么意思(手机屏幕压TP是什么意思)

  • serial no是出厂编号吗(ser.no是出厂编号吗)

    serial no是出厂编号吗(ser.no是出厂编号吗)

  • ps羽化快捷键用不了(ps羽化快捷键在哪里)

    ps羽化快捷键用不了(ps羽化快捷键在哪里)

  • 换过屏幕的手机以后会出现什么问题(换过屏幕的手机好用吗)

    换过屏幕的手机以后会出现什么问题(换过屏幕的手机好用吗)

  • mate30双系统怎么切换(mate30双系统怎么查看)

    mate30双系统怎么切换(mate30双系统怎么查看)

  • 荣耀8x支持内存卡吗(荣耀8x内存扩展教程)

    荣耀8x支持内存卡吗(荣耀8x内存扩展教程)

  • 手机号短信功能被二次封号还能开通吗(怎么关闭手机号短信功能)

    手机号短信功能被二次封号还能开通吗(怎么关闭手机号短信功能)

  • 微信绿码在哪里打开(微信绿码怎么弄出来)

    微信绿码在哪里打开(微信绿码怎么弄出来)

  • 华为nova65g上市时间(华为nova65g什么时候出来的)

    华为nova65g上市时间(华为nova65g什么时候出来的)

  • 鼠标是计算机的什么设备(鼠标是计算机的一种什么设备)

    鼠标是计算机的什么设备(鼠标是计算机的一种什么设备)

  • 为啥华为p30pro摇晃里面会有异响(华为p30遥控器功能不见了)

    为啥华为p30pro摇晃里面会有异响(华为p30遥控器功能不见了)

  • wps怎么变成文本格式(wps怎么改成文本格式)

    wps怎么变成文本格式(wps怎么改成文本格式)

  • vivo怎么打开私密空间(vivo怎么打开私密相册)

    vivo怎么打开私密空间(vivo怎么打开私密相册)

  • 苹果x lla是什么版本(iphone x是什么意思)

    苹果x lla是什么版本(iphone x是什么意思)

  • 微信运动停用了为什么别人还能看到(微信运动停用了之前的步数还显示吗)

    微信运动停用了为什么别人还能看到(微信运动停用了之前的步数还显示吗)

  • vivo是国企吗(vivo是国有企业还是私人企业)

    vivo是国企吗(vivo是国有企业还是私人企业)

  • 探探学生认证能干嘛(探探学生认证有用吗)

    探探学生认证能干嘛(探探学生认证有用吗)

  • 电脑截图快捷键ctrl加什么(电脑截图快捷键是什么组合)

    电脑截图快捷键ctrl加什么(电脑截图快捷键是什么组合)

  • 怎么查看和发送定时说说(怎么查看发送的短信)

    怎么查看和发送定时说说(怎么查看发送的短信)

  • 网络nat类型(网络nat类型检测在线)

    网络nat类型(网络nat类型检测在线)

  • Spring Boot接收从前端传过来的数据常用方式以及处理的技巧(spring boot 接受参数)

    Spring Boot接收从前端传过来的数据常用方式以及处理的技巧(spring boot 接受参数)

  • 超过两年记入错误的主营业务成本怎么调账
  • 公司购车购置税有优惠吗
  • 母公司捐赠资金给子公司
  • 实际上缴税费总额怎么算
  • 在建工程明细账采用什么账簿
  • 收到投资款需要缴纳什么税
  • 先结转损益还是先结转本年利润
  • 购买法下的操纵手法有哪些
  • 什么税不计入税金及附加科目
  • 土地增值税清算管理规程
  • 清税证明要什么证件
  • 权益净利率如何算
  • 食堂收入支出结构图
  • 出售无形资产的会计科目
  • 新成立公司注资流程
  • 建筑工程预收款开票会计分录
  • 凯利公式实战
  • 销售净利率怎么求
  • 增值税即征即退会计处理
  • 施工企业资产负债率
  • 酒店试菜费用会计分录
  • bios读取不出u盘
  • win7宽带连接错误651
  • MAC OS X 10.12.5 beta 4怎么升级 OS X 10.12.5 beta 4升级图文教程
  • 一般纳税人取得普票会计分录
  • 减免的税款还用做分录吗
  • 应交增值税视频讲解
  • 将银行借款存入银行会引起企业资产总额的变化吗
  • 应税货物销售额怎么填
  • 海康威视web开发接口文档
  • vue使用pdf.js
  • 高德地图api获取当前经纬度的城市地图
  • thinkphp save
  • 怎么注册滴滴快车司机客户端
  • 最早的笔记本是512m内存
  • 工业企业出租房屋的租金收入应计入
  • 达特穆尔动物园
  • php字符串在另一个字符串出现
  • 以前年度进项转出分录
  • pdf在线预览备注
  • ai复制命令
  • yolov1 实现
  • 浅析企业坏账产生的原因及对策
  • 其他收益算营业成本吗
  • 发票作废有费用吗
  • 其他应收账款怎么做预算会计分录
  • 开源php 系统
  • select
  • 税负率过低犯法吗
  • 排污收费制度在排污费征收方面存在的问题
  • 利润总额包括的内容主要有
  • 会计新准则2020
  • 异地预缴税金
  • 缔约过失是什么行为
  • 租办公室自己装修可以拆走吗
  • 企业自建房产提款流程
  • 暂估入库的商品怎么做账
  • 代扣代缴公积金现金流量
  • 转让股权需要缴纳哪些税
  • 公司折价购买的股票
  • 其他非流动资产是金融资产吗
  • 小规模普票冲红能退税吗?
  • 固定资产折旧怎么算
  • sql语句优化总结
  • U盘硬装WIN7 64位旗舰系统,是怎样练成的(妹子装机衔接篇)
  • 怎么在bios中开启cs1
  • 通过修改注册表来修改chrome配置
  • win8 设置
  • win7系统怎么查看隐藏文件夹
  • android 界面滑动
  • nodejs require 路径查找
  • linux命令行常用操作
  • 批处理保存文件
  • vue实战案例
  • java模拟浏览器点击
  • jquery插件怎么写
  • Android应用开发实训
  • jquery插件大全
  • jquery控制元素的显示与隐藏
  • 组织收入原则三个务必
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设