首页
社区
课程
招聘
64K 3D动画的实现原理[求助]
发表于: 2007-3-1 14:31 19047

64K 3D动画的实现原理[求助]

2007-3-1 14:31
19047

想问高手门一个问题..很早时期是下过64K的3D动画看过了..画质很棒..音乐效果也好...而且还有20多分钟...
但是一直不知道是怎么实现的..我知道是用的汇编语言...但是只有64K大小??


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
调用Opengl或者DX。精心的编写代码和数据。然后做一个类似UPX的压缩壳。压缩容量。
2007-3-1 17:10
0
雪    币: 237
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也看过,还看过些相关的评论及解剖
其原理似乎和Isaiah说的是一样的 ,但代码应该太高深
2007-3-1 20:23
0
雪    币: 309
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
那个壳也太强了把。。。
2007-3-1 20:55
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
简单地说就是生成技术,包括纹理,模型,音频采样都是由少量参数计算生成的,很有规律性,所以一般只能演示抽象,自然的动画.
汇编几乎没必要,即使有一点,内嵌到VC里就足够了.
2007-3-2 09:19
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
6
超强的压缩壳似乎必不可少?
2007-3-2 11:52
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
7
最初由 Isaiah 发布
调用Opengl或者DX。精心的编写代码和数据。然后做一个类似UPX的压缩壳。压缩容量。


不是类似. 大多数参与比赛的作品就是用的upx压的.
2007-3-2 11:58
0
雪    币: 237
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
传个上来大家看
上传的附件:
2007-3-2 12:54
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
9
也些也用专用的Loader.根据自身的特点,定制一个压缩方案。来达到最佳的压缩效果。
64K的动画,所高深不高深,不过真的要做还是有一定的难度。

动画无非就是调用opengl或者Dx来画点线面和贴图。64动画里面的贴图都是很简单的。有些甚至没有贴图。比如我要画一个房子。就几行代码。
伪码类似下面:
GLBegin(GL_PLOY)
Vertex(x,x,x)
Vertex(x,x,x)
Vertex(x,x,x)
GLEnd
2007-3-2 15:00
0
雪    币: 488
活跃值: (2749)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
10
最初由 dwing 发布
简单地说就是生成技术,包括纹理,模型,音频采样都是由少量参数计算生成的,很有规律性,所以一般只能演示抽象,自然的动画.
汇编几乎没必要,即使有一点,内嵌到VC里就足够了.

玩过一个64KB的第一视角射击游戏..爆强.
2007-3-2 17:14
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
第一视角射击游戏应该是那个96KB的吧,我也玩过.

其实看起来特殊形状的物体也是靠技巧用少量数据生成的.
模型都是一些基本形状(方形,球形,四面体等)用sin,cos等函数变换一下顶点坐标就能把模型复杂化,运气好就能得到像样的模型.
纹理也用简单的p=f(x,y)函数算出来每个像素的颜色值.不同纹理直接再融合一下就能变出很复杂的纹理.音频采样也是同样道理.
几个函数的代码量当然比几幅纹理的数据量少得多.
2007-3-2 18:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
有些此类的程序还可以在里面进行操作……
2007-3-7 12:11
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
第一视角射击游戏在哪下载,可不可以发个网址,游戏名字什么的。我没玩过,想玩玩。谢谢各位大大了。
2007-3-7 21:46
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
妞啊...........
2007-3-8 02:09
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
96k 第一人称射击游戏
这个游戏可惜我玩不了,要求的配置好高啊。
2007-3-8 20:04
0
雪    币: 203
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
应该全是用计算生成的
2007-4-1 22:10
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
画面和音乐/音效还可以,物理引擎和游戏性比较差.
上传的附件:
2007-4-1 23:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
那个只有调用代码吧,调用其他程序和系统内的函数来实现的话源码就应该很少,你在运行时看看他所占的内存吧,那才是他的真实大小.
2007-4-2 08:38
0
雪    币: 293
活跃值: (110)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
19
UPX壳,解压后3.18M 压缩率2%,这个壳强!
D3D实现
2007-4-2 09:50
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
只要调用系统自带的API就不算作弊,当然包括DirectX.任何有意义的Win32程序都要调用系统API.
内存占用和磁盘占用没什么关联.
看看这个非常小的程序:
#include <windows.h>
int main()
{
int t=(int)new char[500000000];
ZeroMemory((void*)t,500000000);
Sleep(-1);
return t;
}
如果内存不超过512MB,那物理内存一定会被吃光...
2007-4-2 18:29
0
游客
登录 | 注册 方可回帖
返回
//