Blender+Three的龙年风格小场景

本来计划年前要完成的个人项目,没想到 拖延症 拖到了元宵节。请问有没有有效根治拖延症的妙方

Live:hello-2024.vercel.app/ (合理上网)

Code:github.com/luosijie/lo...

一、设计与建模

首先我们需要在 Blender 里面设计好场景。会熟练使用 鼠标 和 键盘 的话基本问题不大

1.场景设计与搭建

模型图

渲染图

2.角色设计与建模

角色的设计包括简单的动画制作,需要在 Blender 里面完成

角色的造型和配色参考

3. 龙的模型制作

因为要给龙制作轨迹动画,所以最终导出的模型分为四部分:头部;身体;脚;尾巴

龙的建模与参考

二、资源的导出

由于希望在尽量满足视觉效果的前提下,尽量轻量化资源,同一场景下导出了不同类型的资源

  • 烘焙贴图:一些较大面积的物体,需要还原光照和阴影效果
  • matcap:一些小物体,或 需要重复的物体,比如:树木;元宝;瓦片;灯笼等
  • 模型:根据模型的使用情况,静态模型一般合并导出; 动态和重复模型一般单独导出

场景烘焙贴图

角色烘焙贴图

材质球

三、代码和功能的实现

最初构思的是一个 地图探索类型的RPG小游戏,可以收集红包,打年兽之类的。后面想想还是算了,不要为难自己

1.场景展示

  • 静态物体:一般直接使用导入的模型 和 贴图
  • 重复物体:树木,灯笼,元宝 这些需要在 Blender 里手动收集 坐标参数
  • 地面:地面使用的是单独的阴影贴图,和背景色融为一体

World.build 主要提供静态模型的展示

2.龙的轨迹运动

由于龙是在天空做轨迹运动,所以需要提前在 Blender 里画好轨迹并导出

使用轨迹模型的坐标数据来生成曲线

3. 角色的运动和碰撞

角色的运动 使用 translate 和 rotate 本地坐标变换 角色的碰撞 使用 navmesh (需要提前在Blender里导出)

比较粗糙的角色运动控制

一些碰撞检测

4.相机的运动

场景的相机是根据角色进行运动的,而且可以转动角度和进行缩放。 确定相机与角色的 半径,水平夹角 和 垂直夹角 就可以进行旋转

相机控制

web截图

谢谢阅读!

相关推荐
cTz6FE7gA1 天前
WebGL实战:用Three.js创建3D场景,实现沉浸式Web体验
前端·javascript·webgl
三维搬砖者6 天前
AI 解密大厂 Three.js 三维引擎开发 03|从经纬度到三维世界的坐标解码
webgl·three.js
threelab10 天前
引擎案例分析 02|GeoLayer 大厂地理可视化方案深度拆解
javascript·3d·webgl
山海鲸可视化10 天前
【山海鲸功能演示】如何设置选中按钮的时候其他按钮切换为默认样式?
webgl·可视化·数据可视化·数据表格·搜索框
kadog10 天前
GraphX:基于 WebGL 区间算术的 GPU 加速隐函数绘图器
前端·javascript·数学建模·webgl
ct97811 天前
Cesium的Primitive API
gis·webgl·cesium
一马平川的大草原14 天前
基于Vue+Three.js实现三维油藏模型解析与可视化交互切割操作
vue.js·three.js·三维油藏模型
sin°θ_陈14 天前
前馈式3D Gaussian Splatting 研究地图(路线二):几何优先的前馈式 3DGS——前馈式 3DGS 如何重新拥抱多视图几何
深度学习·3d·webgl·三维重建·空间计算·3dgs·空间智能
RulerMike15 天前
three 实现简单机械臂逆运动
前端·ai编程·three.js
星河耀银海16 天前
3D效果:HTML5 WebGL结合AI实现智能3D场景渲染
前端·人工智能·深度学习·3d·html5·webgl