游戏需要,今天做个20面骰子,材质的话……就整个玻璃质感的骰子吧。由于是用到游戏中的,所以本文还会有一些导入游戏的相关内容。
建模流程
创建几何体本身倒是挺简单,直接 Shift + A 就可以在 网格-棱角球 里创建一个几何体,将细分修改为 1,就是二十面体了。
接下来再修饰一下几何体外观,再编辑器工具里增加倒角效果,并进行自动平滑着色。
然后再对着色器进行一些相关配置:


到目前为止,玻璃骰子的基础设置基本上就做完了,剩下的就是配置颜色,毕竟目前用的还是Blender自带环境,折射出来的样子不太好看。素材的话,就到PEXEL网站里找一个吧。
更换好环境贴图后如图:
再进行一些相关的配置就基本完成了:
导入游戏
接下来就是导入游戏了,我是用的游戏引擎是 Godot4.5,引擎支持直接使用 .Blender 文件作为模型,但是需要指定对应的STL版本的Blender的应用程序路径,这样引擎才能解析文件。同时,Godot对于文件名有一些相关的导入设置,例如名称后面加上 -col 那就是创建刚体,加上 -noimp 那就是在导入时忽略文件。
不过等会……仔细了解后,我发现 Godot 最多只能导入PBR标准材质(原理化BSDF)的输入,所以我前面做的着色器其实是无效的……我得重新在程序里再做一遍。
这倒是难搞了……Godot我不晓得咋用,好吧,那就只能暂且搁置我的玻璃材质了,先整个简单一点的贴图吧。
一个小时后……
我回来了!之前做的都是2D场景,今天研究了一下3D,实现了这样的效果:
这中途有很多困难,例如如何计算纹理,如何将材质贴到骰子身上,如何计算骰子的物理模拟,如何计算点积来判断骰子是否在空间上位于平面……
不过这不是重点,大概知道就好了,制作的时候遇到的最大问题是,当初建立法向量时是完全使用的数学模型,导致后面实际结果和掷骰结果有偏差,有两个面会索引到同一法向面上,这个BUG我到现在也不知道是怎么产生的……后来是直接获取骰子碰撞体,不使用数学模型就解决这个问题了。
目前的话,物理模拟还是不够好看,为了实现能在屏幕中央结束动画,我还使用了弹簧阻尼来施加一个拉伸回中点的力,运动倒是符合物理规律了,就是不好看。
我观察了其他作品,要么是使用动画来实现,要么是不需要经过太大幅度的旋转,我们这思路也算独一份了……
当然,没人用可能是因为不好用……哈哈,总之就先这样吧,踩坑也是学习的必经之路。
版权声明:本文采用 CC BY-NC 4.0 协议授权
转载需注明作者及原文链接: https://mansifield.pages.dev/lnn3ot/