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

  • qq识图取字功能在哪里(qq识图取字功能怎么用)

    qq识图取字功能在哪里(qq识图取字功能怎么用)

  • tim怎么取消置顶(tim窗口置顶)

    tim怎么取消置顶(tim窗口置顶)

  • 三星note10电信卡不能打电话(三星note10 电信卡)

    三星note10电信卡不能打电话(三星note10 电信卡)

  • iphone7p有录屏功能吗(iphone7plus录屏功能)

    iphone7p有录屏功能吗(iphone7plus录屏功能)

  • 笔记本风扇转但是屏幕是黑的(笔记本风扇转但是不出风)

    笔记本风扇转但是屏幕是黑的(笔记本风扇转但是不出风)

  • 两个手机同时登录一个微信(两个手机登录同一个账号)

    两个手机同时登录一个微信(两个手机登录同一个账号)

  • 65w快充手机有哪些(65w快充手机哪些)

    65w快充手机有哪些(65w快充手机哪些)

  • hp126a打印机硒鼓型号(hp 126nw硒鼓)

    hp126a打印机硒鼓型号(hp 126nw硒鼓)

  • 微信密码申诉失败回执单号有什么用(微信密码申诉失败多久可以重新申诉)

    微信密码申诉失败回执单号有什么用(微信密码申诉失败多久可以重新申诉)

  • 显卡是什么(显卡是什么意思)

    显卡是什么(显卡是什么意思)

  • mq8d2ch a是什么型号(mq8e2ch/a是什么机型)

    mq8d2ch a是什么型号(mq8e2ch/a是什么机型)

  • 小米9可以升5g吗(小米9可以使用5g网络吗)

    小米9可以升5g吗(小米9可以使用5g网络吗)

  • 抖音粉丝牌是什么意思(抖音粉丝牌是什么)

    抖音粉丝牌是什么意思(抖音粉丝牌是什么)

  • 天猫精灵怎么用优酷(天猫精灵怎么用网易云放歌)

    天猫精灵怎么用优酷(天猫精灵怎么用网易云放歌)

  • 苹果手机怎么防丢定位(苹果手机怎么防窥屏)

    苹果手机怎么防丢定位(苹果手机怎么防窥屏)

  • 手机录音删除后怎么恢复(手机录音删掉了怎么恢复)

    手机录音删除后怎么恢复(手机录音删掉了怎么恢复)

  • vivox21支持无线充电吗(vivox27支持无线)

    vivox21支持无线充电吗(vivox27支持无线)

  • 小米8ud是什么型号(小米8ud是什么型号和小米8是什么屏幕)

    小米8ud是什么型号(小米8ud是什么型号和小米8是什么屏幕)

  • 打印海报用什么格式(打印海报用什么软件做)

    打印海报用什么格式(打印海报用什么软件做)

  • smartlmage on是什么意思

    smartlmage on是什么意思

  • mate20防水吗(华为mate20防水嘛)

    mate20防水吗(华为mate20防水嘛)

  • oppo怎么关闭用户体验(oppo怎么关闭用电源立即锁定)

    oppo怎么关闭用户体验(oppo怎么关闭用电源立即锁定)

  • QQ音乐怎样截取歌曲(qq音乐怎么截取音乐的一部分)

    QQ音乐怎样截取歌曲(qq音乐怎么截取音乐的一部分)

  • 新闻资讯APP开发如何做(新闻资讯app开发方案)

    新闻资讯APP开发如何做(新闻资讯app开发方案)

  • 阿里巴巴如何分销(阿里巴巴如何分类产品)

    阿里巴巴如何分销(阿里巴巴如何分类产品)

  • uwp是什么(uwp是什么警察)

    uwp是什么(uwp是什么警察)

  • MAC OS X 10.12.5 beta 4怎么升级 OS X 10.12.5 beta 4升级图文教程

    MAC OS X 10.12.5 beta 4怎么升级 OS X 10.12.5 beta 4升级图文教程

  • 个人出租汽车
  • 留抵退税手续
  • 保证人不承担责任(胜诉案例)
  • 公司间借款利息增值税进项能否抵扣
  • 工程建设期间发生的业务招待费
  • 购买股票交易费用计入
  • 购买土地自建厂房,土地怎样摊销
  • 事业单位装修费用
  • 收到进项发票是什么凭证
  • 汇算清缴报告和审计报告有什么区别
  • 个人购买商业保险怎么抵扣个税
  • 通过扣缴义务人和综合申报哪个好
  • 新税法下广告费和业务宣传费的扣除是怎样?
  • 转让不动产增值税计算
  • 销售发票的会计处理
  • 电梯折旧费如何分摊
  • 公司收到虚开发票谁承担
  • 医院收到卫生局补助会计分录怎么写
  • 人力资源公司劳务派遣怎么收费
  • 厂房消防安装图
  • 建筑企业小规模纳税标准
  • 合同期限3年
  • 车辆施救费会计分录
  • 年底结账税金
  • 个人开劳务专票给公司怎么开
  • 写支票人民币大写有角需要写整吗
  • 权益净利率计算公式推导
  • 公积金超出上限部分
  • 铁路改道作业的流程
  • 计提外币借款利息
  • 差额征税的计算方式
  • RSync文件备份同步 Linux服务器rsync同步配置图文教程
  • bios术语
  • 长期待摊费用科目还用吗
  • ipssvc.exe - ipssvc是什么进程 有什么作用
  • avgserv9.exe是什么进程 avgserv9进程的详细介绍
  • 一列火车穿过一条隧道,已知火车长450米,隧道长750米
  • 金鱼花的养殖方法与注意事项
  • 机器设备拆除增值税税率
  • cuda运行环境
  • 公牛牛角
  • 独立核算的基金是会计主体吗
  • chrome插件api
  • thinkphp5框架介绍
  • php反射获取方法参数
  • 想学web前端
  • 应付未付货款会计分录
  • 实收资本与资本公积之和小于实收资本
  • 在建工程的土地可以查封吗
  • 无形资产的成本包括增值税吗
  • 收到费用发票分录
  • 劳务派遣公司如何赚钱的?
  • 员工出差托运行李怎么办
  • 对公账户原路退回备注怎么写
  • 未开发票已收款如何做账?
  • 计提待摊费用分录
  • 汽车折旧年限及残值率是多少
  • 车船税开在备注栏相关文件
  • 免税蔬菜税额用什么表示
  • 错账查找方法主要有
  • 成本核算应设置哪些会计账户
  • win8关闭开机启动项
  • debian更改用户名
  • centos搭建lamp环境
  • centos 安装chia
  • mac入门视频教程
  • 微软推出windows1
  • 预装win7旗舰版
  • 解决的英文
  • 引用javascript外部脚本的正确写法
  • rgb颜色相加
  • unityai寻路
  • jquery22插件网
  • jquery easyui插件
  • python gensim
  • mac版本eclipse 怎么使用
  • javascriptz
  • javascript好学吗?
  • python mor
  • 化妆品过海关要交税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设