關於暴力摩托偽3D演算法?
01-04
在以前硬體不強的時代,暴力摩托是怎樣做出那種偽3D效果的(比如相比2D賽車遊戲,公路地面在角色不同位置看到的是不同的),個人感覺其演算法肯定不是今天的3D演算法,也不是像DOOM1那樣(因為暴力摩托不能水平轉向),有沒有用過類似演算法的給講解一下?比較好奇,謝謝。
===========20150704補充==========簡單點說就是它用的障眼法的思路。
媽的,知乎上提問水平越來越高了。Excited我本來可以不回答你們這些問題的,這叫悶聲發大財。但周末偶爾閑賦在家總是要找點事情做的。Lou"s Pseudo 3d Page 題主看完這個你就可以和上面那些大V談笑風聲了
有可能是 Raycasting
Raycasting is a rendering technique to create a 3D perspective in a
2D map. Back when computers were slower it wasn"t possible to run
real 3D engines in realtime, and raycasting was the first solution.
Raycasting can go very fast, because only a calculation has to be
done for every vertical line of the screen. The most well known
game that used this technique, is of course Wolfenstein 3D.RaycastingA first-person engine in 265 linesRaycaster Demo
ROAD RASH有好幾代,用到的技術也不一樣。
1代和2代還是典型的遊戲機賽車遊戲,遊戲機有專門的顯卡晶元,將畫面分成背景和活動塊來處理,而且遊戲機的畫面並不是做好一張圖像顯示到屏幕上,而是做好一條線就顯示一條線,你看的畫面其實是顯像管餘輝。因此遊戲機上的賽車遊戲,賽道的近大遠小利用的是背景圖像的中斷掃描,背景實際上是一張上下運動的圖片,但是每一行都比上一行放大一級,並且會根據畫面的運動錯位對正,而周圍的景物和車輛則是活動塊,利用運算放縮或者乾脆就是內存中儲存不同大小的圖片來形成近大遠小的效果。後來3DO和PC版本的ROAD RASH(PS版叫ROAD RASH 3D)則是與DOOM類似的光線投射法,地面和牆壁都是透視處理後的材質圖片。
SFC以後的遊戲機中,背景處理中加入了旋轉和放縮的功能,賽道部分的處理就自動化了。PC的偽3D與SFC類似,但是藉助高主頻實現了更複雜的效果。DOOM中地面和天花板也有了材質,而且出現了高低差。暴力摩托可以視為一個去掉天花板的DOOM。Doom engine
我擦,被樓上樓下的都回答完了,繪圖方法除去基於 「多邊形」 的模型外,還有很多其他模型,適合簡化問題,並讓低端設備達到一個 「還行」 的效果,老遊戲多用各種光線跟蹤+模擬計算:
- 無起伏地面:光線跟蹤,計算屏幕上一條掃描線,從屏幕後方中點出發,做一條射線看和地面相交在哪條直線上,然後計算縮放比例後,得到du, dv,然後在屏幕上橫向繪製出來。
- 有起伏賽道:樓上樓下說的分成「條」 來顯示繪製。
- 地形和河流:voxel 光線跟蹤,flipcode - Realtime Voxel Landscape Engines 還有個在線demo: Voxel Space in the game Comanche
- 人物和對象:相似三角形/z模擬計算透視後的大小,然後簡單縮放顯示
----
Code inComplete看這篇文章即可,有原理,有教程,有Demo,有代碼
推薦閱讀:
※2D遊戲中的碰撞檢測都是N^2複雜度嗎?
※怎麼成為遊戲策劃?
※學習遊戲製作要掌握哪些專業知識?
※給日本遊戲主機開發遊戲究竟比給PC開發遊戲難在哪?
※類似 Corona SDK、GameSalad 等跨平台無(或低)編程門檻的遊戲開發工具會在未來一兩年內對移動遊戲開發造成何種影響?