演示地址:https://capricorncd.github.io/blog/dist/three/index.html#/ClockObj
源码:https://github.com/capricorncd/blog/tree/master/demos/three
C4D文件:clock(R21.207).c4d https://github.com/capricorncd/blog/tree/master/c4d
流程
- C4D建模
- 导出
.obj
文件 - js实现(Three.js),此例开发环境使用的Webpack4+React
一、C4D建模
这里B站有视频教程,这里就不赘述。
在线视频教程:https://www.bilibili.com/video/BV177411P7d1?p=3
建模时注意需要注意的地方:
- 建模:不能使用面(Disc)建模,在浏览器中不会显示,需改用圆柱体(Cylinder)。
- 贴图:需给每个几何体贴图,不能使用分组贴图。在Three.js中分组贴图不能与单个几何体绑定,故浏览器中不会显示贴图。
二、导出.obj
文件
C4D中完成建模和贴图后,就可以导出.obj文件。
# 工具栏
file -> Export -> Wavefront OBJ(*.obj)
其他导出选项默认即可。导出obj文件的同时,会导出一个同名贴图.mtl文件。
三、js实现
# "three": "^0.120.1"
npm i -S three
# or
yarn add three
src/components/ClockObj/core.js
import {
AmbientLight,
DirectionalLight, PerspectiveCamera,
Scene, WebGLRenderer
} from 'three'
import {
OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
import {
MTLLoader } from 'three/examples/jsm/loaders/MTLLoader'
import {
OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
let scene, renderer
/**
* 加载贴图和模型对象文件
* load resource
* @returns {Promise<unknown>}
*/
function loadResource() {
return