查看完整版本: [-- TH12东方UFO中5面Boss的曲线激光咋实现? --]

-> 同人游戏创作/Doujin Games Workshop -> TH12东方UFO中5面Boss的曲线激光咋实现? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

同意注册 2010-03-08 13:43

TH12东方UFO中5面Boss的曲线激光咋实现?

这个又是啥高深的数学计算么,请教,还是说又是点点组成的,还是啥,怎么实现?

[attachment=79304]

顺便再问一下,TH10风神录中,Bomb那个光环用的哪个贴图。

[attachment=79305]

ryuka 2010-03-08 18:35
曲线激光用扭曲的网格就可以..

同意注册 2010-03-08 21:20
到现在都不明白网格是啥,只有这一种实现方法么?

同意注册 2010-03-09 09:45
还是再伸手求个扭曲网格入门的地址吧,话说这是关于哪方面的内容,google无果,关键字用的不太对么?

ryuka 2010-03-09 13:14
这样,首先这个激光你可以用一个点list逼近.这个list就类似一个蛇一样.通过动最前面的点.带动后面的点.然后呢.渲染的时候根据这个点list生成网格.

[attachment=79361]

如图所示,红色点是点list里面的点.具体你可以定义一条激光剖分几个点,越多越精确

在渲染的时候.我们首先生成绿色的那个法向,这个法向是前后2条线段的的方向的平均.然后我们找到和法向垂直的方向.根据激光宽度生成上面和下面的顶点位置(蓝色的那些),这些顶点的纹理坐标可以预先生成,然后使用预处理好的index(组织成3角形)来渲染.具体的数据结构你可以用一个vertexbuffer,每次根据点位置计算好顶点位置改写进去.

在更新的时候.可以使用弹簧模型,也就是在最开始一个点移动以后.根据点和点之间的距离和弹簧的胡克定律给后面的点一个拉动加速度(我自己做的时候是直接根据距离给了速度.只要保证最后点点之间距离保持相对的稳定就可以了).然后后面的点就会向前面的点靠拢了.

同意注册 2010-03-09 13:58
太感谢了!

littlewater 2010-03-09 20:06
水水以前问过,当时刚上班,没弄完,当时小野姐(信子)给了(解X)图看的,和YUKI说的不差

不过水水之后看到另外一样东西,在DX的文档里面有关于这个的介绍:

Geometry Blending

Microsoft® Direct3D® enables an application to increase the realism of its scenes by rendering segmented polygonal objects—especially characters—that have smoothly blended joints. These effects are often referred to as skinning. The system achieves this effect by applying additional world transformation matrices to a single set of vertices to create multiple results, and then performing a linear blend between the resultant vertices to create a single set of geometry for rendering. The following image of a banana illustrates this.
[attachment=79368]

详细可以见DX8的手册(大概后面都会有吧)这个坑很老很老了,不知道啥时候会有兴致填了=x=

当时努力了很久,后来就是没时间弄了,好像工作太忙,如果同意大同意一并研究一下,希望能够看到它的应用,不同意也就算了^-^

没记错还有一个例子:vertexblend

[attachment=79370]

期待~

同意注册 2010-03-09 20:15
太瞧得起我了,我这程序入门级,英语高中水平,数学幼儿园水平的选手能有啥作为么,呵呵,我估计YUKI殿说那些我找全东西都理解加写出来都得N久,等我搞定了我会抛代码上来的,如果有我搞定这一天的话~~~

franniss 2010-03-09 20:17
同意注册加油~  

Advance 2010-03-09 20:25
学到了,好帖mark

glkasumi 2010-03-09 20:58
YUKI的做法些曲线插值再用三角形镶嵌的感觉...

而水水说的两个例子基本就是骨骼动画的做法,将顶点绑定在相应的骨骼上面,插值骨骼动画,再形变皮肤网格,
与一般游戏角色的骨骼稍许不同的是像第二幅的Microsoft应该是程序自动生成分配的骨骼节点(比如沿着长轴等距离分配),
而前一幅的香蕉则是将两个不同的动画混合出过渡的幀来的结果

骨骼动画的难点主要集中在 四元数插值 和 世界坐标系和局部坐标系间矩阵转换上

littlewater 2010-03-09 21:00
最后AVC居然也来了=x=
最近有空米^^?

littlewater 2010-03-09 21:04
引用第10楼glkasumi于2010-03-09 20:58发表的  :
YUKI的做法些曲线插值再用三角形镶嵌的感觉...
而水水说的两个例子基本就是骨骼动画的做法,将顶点绑定在相应的骨骼上面,插值骨骼动画,再形变皮肤网格,
与一般游戏角色的骨骼稍许不同的是像第二幅的Microsoft应该是程序自动生成分配的骨骼节点(比如沿着长轴等距离分配),
而前一幅的香蕉则是将两个不同的动画混合出过渡的幀来的结果
.......


原来是这样啊- -话说骨骼当时也弄不出来半路坑掉了(虽然有弄,但是完全没了印象,只记得代码非常长^-^|||)
到时候如果有机会还可以请教GL大了说^-^

glkasumi 2010-03-09 22:42
引用第12楼littlewater于2010-03-09 21:04发表的  :
原来是这样啊- -话说骨骼当时也弄不出来半路坑掉了(虽然有弄,但是完全没了印象,只记得代码非常长^-^|||)
到时候如果有机会还可以请教GL大了说^-^


哦,可以的说,其实我也一段时间没做那方面的研究了(自去年把粒子发射器绑定到某骨骼节点之后...)

h5nc 2010-03-10 00:07
网格本身hge有,但当时测试的时候发现效率很低,之后再也米动过……可以参考一下
那里的不同是在于把整张图扭曲,做激光应该是要把每个图元的矩形都调整再连接

我做的话应该这样,从发射开始,等帧距放入新点,新点方向初始为射出方向,之后每帧由自身方向和前一点的方向求和得出该点本帧方向,速度也是
其实方向和速度在分得比较细的情况下可以采用chase算法,简单说就是假设这点要追踪前一点,而总体追踪时间为其生成间隔的两倍,这样就永远跟在后面了,不牵扯任何复杂计算……
而关于生成点列,我要做的话应该先按照点本身的方向做出矩形来,然后再来一趟把所有相邻点矩形的顶点都取中点……
这样也没有复杂计算了……

啥,你说粗细不均……降低行走速度吧………………

littlewater 2010-03-10 08:47
嗯,仔细重新看了一下关于文档中的解释性描述,大概和YUKI说的方法没啥区别^-^
不过,感觉GL大说的水水那个骨骼和YUKI说的很类似,至少水水理解如此-x-

假如把YUKI各个直线段(曲线插值)理解为骨骼,而上下二个顶点各自理解为依附该关节(JOINT?)的
顶点,那接下来本质和骨骼动画差别不大了吧,也许比较简化^-^

-------------------------------------

也许当时是没有理解嘛,还有MS给的例子总是出奇的复杂- -|||
到目前为止仅好好看过6个tutorial,……

digimondm 2010-03-10 09:19
mark。。。一直在纠结曲线激光的做法。。

同意注册 2010-03-10 16:59
喷,又有这么多高深的回复,果然我还是应该再补补基础再发问。

另外,骨骼动画不懂,或许一年两年后能提问这方面。。。。。

另外,h5大这句不懂。

而关于生成点列,我要做的话应该先按照点本身的方向做出矩形来,然后再来一趟把所有相邻点矩形的顶点都取中点……


这是要算什么?渲染那方面怎么办?是切成小矩形渲染么?

littlewater 2010-03-10 21:39
先弄了一个不怎样的例子……

h5nc 2010-03-11 01:24
引用第17楼同意注册于2010-03-10 16:59发表的 :
喷,又有这么多高深的回复,果然我还是应该再补补基础再发问。 [表情]
另外,骨骼动画不懂,或许一年两年后能提问这方面。。。。。
另外,h5大这句不懂。
.......

不是矩形,最终还是三角形列
这样,你画一下就清楚了,两个矩形ABCD和EFGH,线段BC和EH相交于I,这个I分别是BC和EH的中点
I就是YUKI的红点
我的意思是I点是你知道的,上帧的东西,这帧确定的点是AD中点J,JI连接后确定的ABCD矩形,和上帧确定的EFGH相交(除非角度没变)
取BE中点K,HC中点L分别取代B、E和H、C,就得到了调整的两个共享边KL的两个直角梯形
根据这个直角梯形分的两个三角形
四个顶点都非常好计算,CPU进行就行了……

同意注册 2010-03-11 12:28
懂了。10.........字节


查看完整版本: [-- TH12东方UFO中5面Boss的曲线激光咋实现? --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.031946 second(s),query:2 Gzip enabled