• 主页
  • 读书笔记
  • 备案号:滇ICP备19009238号
所有文章 其他站点 关于我

  • 主页
  • 读书笔记
  • 备案号:滇ICP备19009238号

Blender导出three.js模型,three.js引入其模型

2021-01-18

Blender导出three.js模型.GLB或.GLTF数据,three.js引入其模型.GLB或.GLTF数据。
建议使用glTF(GL传输格式)

Blender安装

安装包下载地址:https://www.blender.org/download/

建模并导出.gltf数据

文件 > 导出 > glTF > 位置+命名+格式 > 导出

查看模型

Blender软件等,
网站glTF Viewer:https://gltf-viewer.donmccurdy.com/

three.js导入模型

注意:根据模型的材质判断是否需要灯光,有些模型需要反射才可见。

引入GLTFLoader

GLTFLoader模块用于导入外部GLTF模型

下载安装imports-loader and exports-loader
用于向一个模块的作用域内注入变量,以及从模块中导出变量。

1
npm install imports-loader exports-loader --save-dev  

配置webpack.base.conf.js文件
在其module中的rules[]中添加:

1
2
3
4
5
6
7
8
{
test: require.resolve('three/examples/jsm/loaders/GLTFLoader'),
use: 'imports-loader?THREE=three'
},
{
test: require.resolve('three/examples/jsm/loaders/GLTFLoader'),
use: 'exports-loader?THREE.GLTFLoader'
}

引入GLTFLoader

import { GLTFLoader } from ‘three/examples/jsm/loaders/GLTFLoader’

同理引入OrbitControls

OrbitControls模块用于场景控制

配置webpack.base.conf.js文件

1
2
3
4
5
6
7
8
{
test: require.resolve('three/examples/jsm/controls/OrbitControls'),
use: 'imports-loader?THREE=three'
},
{
test: require.resolve('three/examples/jsm/controls/OrbitControls'),
use: 'exports-loader?THREE.OrbitControls'
}

引入OrbitControls

import { OrbitControls } from ‘three/examples/jsm/controls/OrbitControls’

若程序找不到GLTFLoader、OrbitControls,则删除webpack.base.conf.js的相应配置,只要实现文件的直接引入即可
若没有three/examples,则下载安装

1
cnpm i import-three-examples --save-dev

导入外部模型

引入OrbitControls使用,直接new

this.controls = new OrbitControls(this.camera, this.renderer.domElement)

GLTFLoader使用,直接new

let loader = new GLTFLoader()

导入外部模型
一定定义let self = this,直接使用this.scene不行。
若使用webpack打包,glb模型一定放static文件夹或者public文件夹下。

1
2
3
4
5
6
7
8
let self = this
loader.load('../../static/glTF/test.gltf', function (gltf) {
self.scene.add(gltf.scene)
}, function (xhr) {
console.log((xhr.loaded / xhr.total * 100) + '% loaded')
}, function (error) {
console.error(error, 'load error!')
});

Vue引入外部模型code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<template>
<body></body>
</template>

<script>
import * as Three from 'three'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'

export default {
name: 'Test',
data () {
return {
scene: null, // 场景
camera: null, // 相机
renderer: null, // 渲染器
controls: null // 控制器
}
},
methods: {
init: function () {
// 新建空白场景
this.scene = new Three.Scene()

// 新建透视相机
this.camera = new Three.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000)
//设置相机位置
this.camera.position.set(5, 0, 10)
// 相机指向原点
this.camera.lookAt(new Three.Vector3(0, 0, 0))

// 设置灯光,环境光
let light = new Three.AmbientLight(0xffffff)
this.scene.add(light)

// 初始化渲染器
this.renderer = new Three.WebGLRenderer({ antialias: true })
this.renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(this.renderer.domElement);

// 初始化控制器
this.controls = new OrbitControls(this.camera, this.renderer.domElement)

// 加载外部模型
// 模型文件放在静态路径文件夹
let loader = new GLTFLoader()
let self = this
loader.load('../../static/glTF/test.gltf', function (gltf) {
// 添加场景
self.scene.add(gltf.scene)
}, function (xhr) {
console.log((xhr.loaded / xhr.total * 100) + '% loaded')
}, function (error) {
console.error(error, 'load error!')
});
},
animate: function () {
// 动画系统
requestAnimationFrame(this.animate)
this.renderer.render(this.scene, this.camera)
}
},
mounted () {
this.init()
this.animate()
}
}
</script>
<style scoped>
body {
overflow: hidden;
}
</style>
  • Blender three.js
npm-install-g-S-D详解
three.js主要组件
  1. 1. Blender安装
  2. 2. 建模并导出.gltf数据
  3. 3. 查看模型
  4. 4. three.js导入模型
    1. 4.1. 引入GLTFLoader
    2. 4.2. 同理引入OrbitControls
    3. 4.3. 导入外部模型
  5. 5. Vue引入外部模型code
© 2023 曳戈泰尔
Hexo Theme Yilia by Litten
  • 所有文章
  • 其他站点
  • 关于我

tag:

  • SHA256
  • AI换脸
  • VITS
  • APM
  • Anaconda
  • AnsibleAWX
  • ArrayList
  • Bean
  • BigDecimal
  • Blender three.js
  • API开放接口
  • xmlRPC
  • Ice
  • MySQL
  • BeanUtils
  • Tomcat
  • Caffeine
  • gradle
  • Docker
  • jdk
  • maven
  • JDK
  • localtime
  • Minio
  • PostgreSQL
  • RT_Linux
  • kafka
  • geany
  • CentOS
  • Elasticsearch
  • Node
  • FastDFS
  • Nginx
  • CompletableFutures
  • CompletableFuture
  • CountDownLatch
  • queue
  • Conflux
  • DefaultIdentifierGenerator
  • gdb
  • Deepin
  • Deferred
  • 自动化部署
  • Nacos
  • Redis
  • RocketMQ
  • docker-compose
  • docker日志
  • Docker部署
  • Drools
  • Vue
  • 持有者作为调用者
  • Error
  • ES
  • 签名上链
  • FISCO
  • Prometheus-Grafana-nodeExporter
  • FISCO开放平台
  • 解析input
  • ForkJoinPool
  • GateWay
  • Git
  • GeoServer
  • GitLab
  • Gradle
  • Spring
  • Gitlab
  • HTTP
  • Hexo GitHub-Pages
  • HttpUtil
  • IDEA
  • Gson
  • 热部署
  • HttpClientUtil
  • 搜索
  • Stream
  • foreach
  • Graphics2D
  • Synchronized
  • 循环
  • Integer
  • base64
  • JAVA
  • Excel
  • openID
  • NowTime
  • MD5
  • 字节流
  • 手机号
  • 支付宝
  • Object
  • 行政区划
  • 序列化
  • telnet
  • 枚举
  • 限流
  • 配置文件
  • 规则执行器
  • cmd
  • netty websocket
  • JAVE2
  • 线程池
  • 分治
  • JMH
  • JVM
  • Jenkins
  • Java调用AI输入输出
  • JWT
  • Kindle
  • Knif4j
  • jar
  • UDP
  • SonarQube
  • 部署
  • Ansible
  • IP
  • socket
  • List排序
  • MQ
  • MapStruct
  • Maven
  • MyBatis-Plus
  • MyBatis
  • 跳板机
  • event
  • trigger
  • 全文索引
  • 扣费 线程安全
  • MybatisPlus
  • LambdaQueryWrapper
  • Navicat
  • Explain
  • 私人助理
  • nacos
  • Nexus
  • WebSocket
  • OSS
  • OkHttpClient
  • OA
  • PicGo
  • 可视化监控
  • Optional
  • SpringBoot
  • 关键词
  • TSV
  • 性能指标
  • json
  • Pycharm
  • 文件夹遍历
  • TCP
  • Qt
  • QueryWrapper
  • Quartz
  • RSA
  • RabbitMQ
  • RateLimiter
  • Redisson
  • 阻塞等待锁
  • ZSET
  • incr
  • 频率限制
  • SAE
  • RESTful API
  • SCP
  • RuoYi
  • SM3
  • SKU
  • SQL
  • SQL前n天
  • SSL
  • Shell脚本自动化
  • Sleuth
  • Socket
  • PageHelper
  • Solidity
  • gateway
  • Batch
  • Spring Boot
  • build.gradle
  • Schedule
  • 循环重试
  • Undertow
  • 多筛选
  • IPFS
  • Jasypt
  • logback
  • 加解密
  • 幂等性
  • Result
  • log
  • Mail
  • 滑块
  • Druid
  • knife4j
  • 注入
  • Full Lite
  • 权限
  • 跨域访问
  • starter
  • 防刷
  • XSS
  • Event
  • 多数据库
  • Scheduled
  • yml
  • Async
  • AOP
  • CurrentUser
  • AutoGenerator
  • netty
  • Openfeign
  • Sentinel
  • Shiro
  • Swagger
  • XMLRPC
  • captcha
  • OAuth
  • 文件上传
  • 验证码登录
  • Response
  • Exception
  • 文件下载
  • 自定义注解
  • Thread
  • 观察者
  • 音视频
  • dll
  • StopWatch
  • String
  • Transactional
  • ThreadLocal
  • TLS
  • 挂载
  • VMware
  • VPN
  • VSAT
  • VScode
  • VS
  • Valid
  • 二维码
  • three.js
  • ECDSA
  • Tornado
  • WorkBench
  • VxWorks
  • select
  • taskSpawn
  • WPS
  • WeBase
  • JavaScript
  • COOKIE
  • 消息推送
  • 开启启动
  • VxWorks WorkBench
  • XStream
  • ab
  • appId appKey
  • printStackTrace
  • gitlab
  • excel2word
  • git
  • 经纬度
  • isNull isEmpty isBlank
  • mybatisplus
  • SSH
  • nohup日志
  • phpstudy
  • npm
  • 图片
  • nginx
  • url
  • xml
  • 去背景
  • 提取学号
  • 一键登录
  • xxl-job
  • 并发
  • 接口
  • 一致性HASH
  • 责任链
  • 两层请求体
  • 二次支付
  • 个人支付
  • 设计模式
  • 代理
  • MERGE
  • 保存MultipartFile
  • PDF
  • 链间数据迁移
  • session
  • 鉴权
  • 证书生成
  • 单例
  • 压测
  • shell
  • 发布Jar
  • sms
  • 升级代理合约
  • 支付
  • 图片转PDF
  • 拍平JSON
  • SSO
  • property
  • 内容安全
  • 循环分页
  • crontab
  • 日志清理
  • 实名
  • 绩效
  • 读书笔记
  • 歌词识别
  • component初始化
  • 抽奖
  • 数据脱敏
  • 验证码
  • 网络攻防
  • 慢排查
  • Native支付
  • 裁剪字符串
  • WebView
  • 文本折叠
  • 上拉加载数据
  • 弹窗输入框
  • 图片裁剪
  • banner
  • 局部刷新
  • 弹窗
  • StorageSync
  • 标签id值
  • openId
  • 角标
  • globalData
  • url传值
  • Feign
  • 懒加载
  • 订阅消息
  • 设备交接
  • 提取txt 提取word
  • 回调
  • 支付超时
  • Assert
  • 乐观锁
  • 服务器
  • 监控
  • 运维
  • 方案
  • Enum
  • 测试
  • 校招
  • 死锁
  • 兑换码
  • 订单
  • 余额扣减
  • sku gson
  • 电商
  • 短信验证码
  • 伏羲PDF
  • 秒杀
  • 后台
  • 不可破解key
  • 排查
  • 线程安全 Map List
  • 上下电
  • CRUD拆分的宽表
  • ip2region
  • 行政
  • 文件校验FileSize
  • ParameterMap
  • EventBus
  • 微信手机号
  • 购买掉单
  • resources
  • 音频时长
  • IDCardUtils
  • Ghelper
  • Forest
  • 邀请
  • 过滤器 拦截器
  • 通信
  • Retry
  • 人脸融合
  • 时间差
  • 短信
  • 集合
  • 长安链

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 区块链
  • GPT
  • gitee1
  • gitee2
  • github
  • Other
徘徊在原子与字节的边缘

将更好的自己呈现给世界



修心至要,事上磨练

一蓑衣,一壶酒,一曲长歌,一剑天涯

见自己,见天地,见众生