易码技术论坛

 找回密码
 加入易码
搜索
查看: 742153|回复: 28

[源码] 求很久以前TGCLC上的文曲星的3D效果源码.

[复制链接]
发表于 2007-6-29 23:53:18 | 显示全部楼层
找到了一篇,不过和LZ说的不一样
原创]新技术,通过投影变换,在星星上显示3d图形
作者:npassword

  有3d编程经验的一看就懂,以下类似投影变换,将3d图形中的每个顶点,透视到屏幕平面上,再在星星的屏幕上把所有点连起来,形成3d效果,我没学过线性数学,所以有错误请大家见谅。

为适应星星的屏幕,我把世界坐标的方向改成了如图所示





其中的sbp(screen basic point)为坐标转换的重要一点,用它可以算出屏幕上的坐标.基本原理就是算出视点(相当于眼睛eye)与顶点(v)连成的空间直线方程(有三个方程),此直线交屏幕平面的点既是要在星星上显示的点,用它与sbp坐标差计算出此点在屏幕平面的相对坐标(sx,sy),再画出点之间连线即可.
10 ex=0:ey=-40:ez=-200:f=80 (这里是视点eye的坐标和焦距)
20 vx(0)=0:vy(0)=-50:vz(0)=0 (第一点的x,y,z)
30 vx(1)=0:vy(1)=0:vz(1)=-27 (第二点)
40 vx(2)=25:vy(2)=0:vz(2)=25 (.....
50 vx(3)=-25:vy(3)=0:vz(3)=25
60 goto 300
70 if peek(196)=223 then ex=ex+2:goto 300 (按d,视点坐标延x轴移动2)
80 if peek(198)=223 then ex=ex-2:goto 300 (......
90 if peek(197)=239 then ey=ey-2:goto 300
100 if peek(197)=223 then ey=ey+2:goto 300
110 if peek(196)=239 then ez=ez+2:goto 300
120 if peek(198)=239 then ez=ez-2:goto 300
130 goto 70
300 for i=0 to 3: vx=vx(i): vy=vy(i): vz=vz(i): z=ez+f (渲染4个点,存入每个点的坐标,z=ez+f就是简化的投影平面方程)
310 x=(vx-ex)*(z-ez)/(vz-ez)+ex: y=(vy-ey)*z-ez)/(vz-ez)+ey: sx=x-ex+80: sy=y-ey+40 (纯粹是考立几,前面的就是空间直线方程的两个方程,用来计算与投影平面交点的世界坐标,后面就是将世界坐标转换成投影平面相对坐标的计算,也就是在星星屏幕上的坐标)
320 if sx<1 then sx=1 (为测试而简化的部分,三维图形在星星屏幕边界会扭曲,还没想到好方法解决)
330 if sy<0 then sy=0 (同上)
340 sx(i)=sx: sy(i)=sy: next (存储该点投影变换的结果,并返回运算下一点)
350 cls: line sx(0),sy(0),sx(1),sy(1),1: line sx(0),sy(0),sx(2),sy(2),1 (运算完成,完成真正的渲染)
360 line sx(0),sy(0),sx(3),sy(3),1: line sx(1),sy(1),sx(2),sy(2),1
370 line sx(1),sy(1),sx(3),sy(3),1: line sx(2),sy(2),sx(3),sy(3),1
380 goto 70
(以上在nc2000c上测试通过,其他型号只需修改按键值)
用w,s,a,d控制视点(摄像机)上下左右,e是前进,q是后退,移动时是否找到了玩cs的感觉.
以上程序简化成只能控制投影平面上下左右平动,我正在作视角可旋转的程序,嗨,方程太复杂了,我晕.
清屏简化为cls,使得移动时闪烁太厉害,改善一下应该流畅很多.
还有如果从后往前渲染所有点,再在画每个三角形时,清除三角形内的图形,只留边框(不太会,哪位指点一下),便可以使它看起来更像一个实体.
实际上以上程序实用性不大,因为不可能同时渲染几十,几百个点,只作为技术的创新而已,当然如果谁能受到启发,用星星作出了真正的3d游戏,我绝对强烈支持!!!
 楼主| 发表于 2007-6-29 23:55:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-6-29 23:59:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 00:02:43 | 显示全部楼层
好像是投影之类的……
 楼主| 发表于 2007-6-30 00:05:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 00:12:35 | 显示全部楼层
空间站不是可以下载吗?
发表于 2007-6-30 00:13:03 | 显示全部楼层
 楼主| 发表于 2007-6-30 00:15:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 00:18:45 | 显示全部楼层
有个“快车下载”不知道是不是
 楼主| 发表于 2007-6-30 00:19:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 00:21:58 | 显示全部楼层

估计作者没放出代码!
 楼主| 发表于 2007-6-30 00:23:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 00:29:30 | 显示全部楼层
引用第12楼红色激情2007-06-30 00:23发表的“”:
哎,现在喜欢一些古董。
和我一样
 楼主| 发表于 2007-6-30 00:30:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 06:37:41 | 显示全部楼层
有个3D 迷宫不知道LS玩过没有啊!

是BAS的,很不错!
 楼主| 发表于 2007-6-30 08:04:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 08:16:51 | 显示全部楼层
这么经典的游戏没玩可惜啊
不过我的3000计时不准

还有金字塔的开头也是3D啊
还有一个NC3000的性能测试软件也有3D

把金字塔也传上来了

那个测试暂时找不到了

PS。大家要找老游戏可以去我的网盘(签名里)
那里挺多的

NTsoft三维迷宫.rar

10 KB, 下载次数: 853

金字塔.rar

14 KB, 下载次数: 857

发表于 2007-6-30 08:18:29 | 显示全部楼层
哦。。我也没玩过。。。都传上来吧``
 楼主| 发表于 2007-6-30 09:23:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-6-30 09:51:07 | 显示全部楼层
我说那个开头的动画
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-11-5 23:46 , Processed in 0.013988 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表