赞
踩
1 前言(该部分为技术介绍,可跳读)
本文分享一种自定义Mesh动态绘制的方法,gif中的游戏效果即为本方法的实际效果。自定义Mesh,即是开发者或用户任意绘制的3D模型(本方法是对Laya底层createBox()的拓展,所以3D模型多为线体);动态绘制则体现本方法的实时性。
本方法的设计背景系本人实习期对一款名为《画个腿快跑》的H5游戏开发。当今动手益智类小游戏中运用绘制模型吸引儿童玩家的实例不在少数,而简单的使用Box堆叠模型显然低效。另外,在类似《画腿》这样需要绘制的模型是刚体时,对模型组件的规约便十分复杂(该结论总结于与老同事《画车》项目的对比)。
最后,在老公司做完技术分享后,我便有了写作该文的想法,至今提笔。目录见下图1.1:
2 预备知识介绍(有相关基础者,可跳读)
本方法涉及知识包括:计算机图形学、LayaAir引擎(非物理)与平面几何。首先,读者要知道计算机中的3D模型都是通过三角形面片组合而成,直观地看(如图2.1),读者也可自行去Laya官网体验:https://layaair.ldc.layabox.com/demo2/?language=zh&category=3d&group=Mesh&name=MeshLoad。由此可见模型的形态是以何种形式的数据在计算机中存储的,本文介绍的方法便是打算从三角形面片入手来实时绘制3D模型(对Laya底层中的CreateBox()进行升级)。
在模型绘制时遇到角度计算则运用简单的平面几何知识。本人非数学专业,仅仅拿数学当工具,在这一节里系统地概括运用到的数学方法对本人来说困难了,望读者海涵。
最后,分享会上也有人问:用户的2D形状描述要怎么实现?由于这一部分(Graphic API)要介绍的话,篇幅不会比我想介绍的createLine()算法内容少,当时不想本末倒置(现在也不想),并且官网和论坛上已经有很好的介绍读物和入门教程了。https://blog.csdn.net/wangmx1993328/article/details/84997876绘制时保存下来的点集就是就是用户自定义模型的数据描述;绘制后的图形就是形态描述。
从小节标题上看,这节还**在介绍。不过本节内容可以说是学会自定义Mesh动态绘制的最关键,因为理解了Laya底层的CreateBox,读者才能知道Laya是怎么在计算机上画出3D模型的。
new Laya.MeshSprite3D(Laya.PrimitiveMesh.createBox());
首先createBox()是Laya.PrimitiveMesh提供的一个方法,用来生成一个立方体网格模型。值得一提的是PrimitiveMesh里已经提供了常用的3D模型的生成方法,例如球、锥等等,详细用法读者可参
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。