968 lines
44 KiB
Plaintext
968 lines
44 KiB
Plaintext
![]() |
.Start.of.DemoNews.118..............................................Size:45,139
|
||
|
|
||
|
______/\___________________________ __ ________________ ___ /\_______
|
||
|
\____ \ ________ _ _ ______ \ / \| \ ________ | \/ ______/
|
||
|
/ | \ _) \ \_/ \ | \ / \ \ _) \ | \______ \
|
||
|
/ | \ \ | \ | \ / \ \ /~\ \ / \
|
||
|
\_____ /_______/___| /________/ \____\_____/_______/_________/________/
|
||
|
\_____/ |____/
|
||
|
| Subscribers : 2014
|
||
|
DemoNews Issue #118 - March 5, 1996 | Last Week : 1950
|
||
|
------------- | Change : +64
|
||
|
DemoNews is a newsletter for the demo scene. | Archive Size : 2169M
|
||
|
It is produced by Hornet at the site ftp.cdrom.com. | Last Week : 2108M
|
||
|
Our demo archive is located under /pub/demos. | Remaining : 795M
|
||
|
|
|
||
|
=-[Contents]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
Line Section
|
||
|
------ -------------------------------------------------------------------
|
||
|
33 Calendar
|
||
|
55 Top Downloads
|
||
|
78 Uploads
|
||
|
214 Articles
|
||
|
216 Introduction................................Snowman
|
||
|
249 Quotes Heard in the Demoscene...............Trixter
|
||
|
362 10 Ways NAID '95 Will Differ from NAID '96..GD
|
||
|
527 Funktracker Port to Linux...................JsNO
|
||
|
550 Intro to 3D Graphics - Volume 03............Kiwidog
|
||
|
945 Subscribing
|
||
|
960 Closing
|
||
|
|
||
|
|
||
|
=-[Calendar]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
Date Event Location Concact Points
|
||
|
--------- ------------------- --------- -------------------------------------
|
||
|
29 Mar 96 Mekka Germany PV80090@PH80090.HH.eunet.de
|
||
|
http://www.xs4all.nl/~blahh/RAW/Parties/Invitations/Mekka.html
|
||
|
|
||
|
02 Apr 96 The Gathering Norway mikaels@powertech.no
|
||
|
http://www.ifi.uio.no/~uwek/Crusaders/TG
|
||
|
|
||
|
05 Apr 96 Symposium Germany gandalf@blackbox.shnet.org
|
||
|
http://134.28.37.10/~frank/bbx-sym96/bbx96.html
|
||
|
|
||
|
06 Apr 96 X Netherlnd cba@xs4all.nl
|
||
|
http://www.xs4all.nl/~herkel
|
||
|
|
||
|
31 May 96 Naid Canada naid@autoroute.net
|
||
|
http://www.autoroute.net/~naid
|
||
|
|
||
|
More information is at http://hagar.arts.kuleuven.ac.be/~sdog/party.html
|
||
|
|
||
|
|
||
|
=-[Top Downloads]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
NOTE: Statistics are sometimes slightly off due to symbolic links, mirrors,
|
||
|
renamed files, and other things that affect the log files.
|
||
|
|
||
|
Pc Times FileName.Ext Pc Times FileName.Ext Pc Times FileName.Ext
|
||
|
-- ----- --------.--- -- ----- --------.--- -- ----- --------.---
|
||
|
<COMBINED LIST> <DEMOS LIST> <GRAPHICS LIST>
|
||
|
1 00416 ft206.zip 1 00238 mfx_tgr2.zip 1 00044 bondage.zip
|
||
|
2 00238 mfx_tgr2.zip 2 00190 nooon_st.zip 2 00035 airwar.zip
|
||
|
3 00236 cp16.zip 3 00188 ftj_ymca.zip 3 00032 spacetit.zip
|
||
|
4 00190 nooon_st.zip 4 00184 animate.zip 4 00026 dst_frac.zip
|
||
|
5 00188 ftj_ymca.zip 5 00129 symbolog.zip 5 00026 vamp10.zip
|
||
|
6 00184 animate.zip <MUSIC LIST> <CODE LIST>
|
||
|
7 00172 scrmt321.zip 1 00426 ft206.zip 1 00152 ggouro2.zip
|
||
|
8 00161 it105.zip 2 00234 cp16.zip 2 00119 dcc_3de.zip
|
||
|
9 00161 ft204.zip 3 00172 scrmt321.zip 3 00115 dn116_3d.zip
|
||
|
4 00161 it105.zip 4 00097 pmw122.zip
|
||
|
5 00090 s64.zip
|
||
|
|
||
|
<Files downloaded total : 066259>
|
||
|
|
||
|
|
||
|
=-[Uploads]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
=----------------------------------------------------------[File Information]-=
|
||
|
|
||
|
All files listed below are on ftp.cdrom.com under /pub/demos.
|
||
|
Please keep in mind that all ratings are subjective.
|
||
|
|
||
|
If your file transfers are too slow, there are several alternatives:
|
||
|
|
||
|
Our code mirror is ftp.co.iup.edu/code. ftpadmin@ftp.co.iup.edu for help.
|
||
|
Try getting files from the web at http://www.cdrom.com/pub/demos
|
||
|
See /hornet/demonews/demonews.102 for details about ftpmail.
|
||
|
|
||
|
You may also wish to check out a couple of other good demo sites:
|
||
|
|
||
|
ftp://ftp.arosnet.se/e:\demo maintained by Zodiak / Cascada
|
||
|
ftp://hagar.arts.kuleuven.ac.be/demos maintained by Sleeping Dog / Natives
|
||
|
|
||
|
Here are also a few good WWW links to try out (under construction):
|
||
|
|
||
|
http://www.th-zwickau.de/~maz/sound.html for music and sound utils
|
||
|
|
||
|
|
||
|
=-------------------------------------------------------------[Demos:General]-=
|
||
|
Location /demos/alpha Size Rated Description
|
||
|
=-------------------------------- ---- ----- ---------------------------------=
|
||
|
/1996/d/distant.zip 5 **** Distant by Remal
|
||
|
/1996/j/jump_n.zip 208 *+ Jump by Nova
|
||
|
|
||
|
=-------------------------------------------------------------[Music:General]-=
|
||
|
Location /demos/music Size Rated Description
|
||
|
=-------------------------------- ---- ----- ---------------------------------=
|
||
|
/disks/1996/m/myst0296.zip 1239 ***+ Mystique Music Disk 02/96
|
||
|
/songs/1994/mod/f/fullmoon.zip 163 ** Full Moon Rock by Heatbeat
|
||
|
/songs/1994/mod/i/iridium.zip 247 *** Iridium by Misty and Daeron
|
||
|
/songs/1994/mod/k/killingf.zip 96 ***+ Killing Floor v2.1 by Chorus+Sid
|
||
|
/songs/1994/mod/m/mypolska.zip 114 **** Myonnytspolska by Dizzy
|
||
|
/songs/1994/mod/n/netherwd.zip 293 ***+ Netherworld by Probe
|
||
|
/songs/1994/mod/n/nk_acid2.zip 144 *** Acid Jazz (pt 2) by Nuke
|
||
|
/songs/1994/mod/n/nocorner.zip 67 **+ No Corners by The Master
|
||
|
/songs/1995/mod/d/deci.zip 247 * Deci by T.U.O
|
||
|
/songs/1995/mod/j/julius.zip 289 ***+ Julius! by Julius
|
||
|
/songs/1995/s3m/g/ghost.zip 116 ** Celes.Mel. by Zaigamor Spellweaver
|
||
|
/songs/1995/s3m/v/vibrphns.zip 77 *** Vibraphones by Julien Lariviere
|
||
|
/songs/1995/xm/h/h2-brght.zip 238 * Bright Green World by Trajic
|
||
|
/songs/1995/xm/i/ineed.zip 563 *** I Need the Actions by Lizardking
|
||
|
/songs/1995/xm/l/lk_indi.zip 715 * Elvis E. Ind. by LK+Ante Lundgren
|
||
|
/songs/1995/xm/l/lk_infer.zip 417 ***+ Inferno Dance by Lizardking
|
||
|
/songs/1995/xm/l/lk_sat.zip 715 * Saturday Night by Lizardking
|
||
|
/songs/1995/xm/p/physiogn.zip 293 ***+ Physiognomy by Trajic
|
||
|
/songs/1996/it/j/joint.zip 136 *+ Joint by Galahad
|
||
|
/songs/1996/it/n/no-secon.zip 107 *** Second Sight by Delta X
|
||
|
/songs/1996/it/v/vs_tefth.zip 232 ***+ The Soul Tefth by Vadim VS
|
||
|
/songs/1996/mod/d/dem-fl.zip 70 ***+ Flatloop by ???
|
||
|
/songs/1996/mod/d/dieindus.zip 76 *** Die Industry by Frelancer
|
||
|
/songs/1996/mod/d/dream_s1.lha 204 ** Dream Sequence Part 1 by Hypno
|
||
|
/songs/1996/mod/d/dream_s2.lha 95 *** Dream Sequence Part 2 by Hypno
|
||
|
/songs/1996/mod/d/dream_s3.lha 100 **+ Dream Sequence Part 3 by Hypno
|
||
|
/songs/1996/mod/h/heavenp.zip 51 ** Heaven of Pain by Madokan
|
||
|
/songs/1996/mod/m/mars.zip 97 ** Mars Power by Michiru
|
||
|
/songs/1996/mod/v/venus.zip 96 **+ Venus Power by Michiru
|
||
|
/songs/1996/s3m/g/g_gcntri.zip 131 ***+ Centauri Grey by GentlE
|
||
|
/songs/1996/s3m/g/gals.zip 112 ***+ Gals Spakoz by Zenecade
|
||
|
/songs/1996/s3m/g/gf_alway.zip 97 ***+ Always Dark by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_depen.zip 121 ***+ Dependance by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_heave.zip 162 **** Heaven is So Far by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_inter.zip 77 **** Interstice by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_lost.zip 150 *** Lost Soul by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_space.zip 117 *** Space Killer by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_techn.zip 137 *** Tech Not! by Ghost Fellow
|
||
|
/songs/1996/s3m/g/gf_willb.zip 76 ***+ This Will Be by Ghost Fellow
|
||
|
/songs/1996/s3m/i/icefirst.zip 262 + Think About.. by George Gaspari
|
||
|
/songs/1996/s3m/l/lush.zip 138 ***+ Lush Forests by Zaig. Spellweaver
|
||
|
/songs/1996/s3m/m/m-river.zip 137 **+ River of Sadness by Guizmo
|
||
|
/songs/1996/s3m/m/m-rnr.zip 177 *** R'n'R by Uterere
|
||
|
/songs/1996/s3m/m/m-spell.zip 197 **+ Gypsy's Spell by Guizmo
|
||
|
/songs/1996/s3m/m/m-war.zip 263 *** WarCraft by Guizmo
|
||
|
/songs/1996/s3m/m/meta.zip 59 *** Metamorphica by Zenecade
|
||
|
/songs/1996/s3m/n/no-knife.zip 67 **+ CutThroat by SamH
|
||
|
/songs/1996/s3m/n/no-var-p.zip 217 **+ Variable-P by Syrinx
|
||
|
/songs/1996/s3m/n/no-zjump.zip 292 ***+ Zydeco Jump by Stote
|
||
|
/songs/1996/s3m/p/pr-adjst.zip 221 ***+ Adjustments by Darkwolf
|
||
|
/songs/1996/s3m/p/pr-aware.zip 143 *** Awareness by Darkwolf
|
||
|
/songs/1996/s3m/v/v-river.zip 116 **+ The River Eternal by Vegas
|
||
|
/songs/1996/xm/e/echnaton.zip 244 * Echnaton by Scolnick
|
||
|
/songs/1996/xm/g/gl-night.arj 618 *** Forever Night by Glitch
|
||
|
/songs/1996/xm/h/holyhell.zip 215 *+ Holyhell by ???
|
||
|
/songs/1996/xm/h/htime.zip 415 ** House Time by Trauma
|
||
|
/songs/1996/xm/l/ladybug.zip 168 ** Ladybug by Scolnick
|
||
|
/songs/1996/xm/l/leggmatt.zip 529 *+ Leggematter'n by Xerxes
|
||
|
/songs/1996/xm/m/ms_hfl.zip 83 **+ Heart Full of Love by Miss Saigon
|
||
|
/songs/1996/xm/m/myrose.zip 262 ***+ My Rose by Nedeljko Gajic
|
||
|
/songs/1996/xm/n/ng-lcyc.zip 384 **+ Lunar Cycle by Solaris
|
||
|
/songs/1996/xm/n/ng-ondat.zip 178 **+ Ondated by Demuc
|
||
|
/songs/1996/xm/n/ng-rad.zip 326 *** Radition by Cicada
|
||
|
/songs/1996/xm/n/no-feuil.zip 350 **** Feuilles Mortes by Spyder
|
||
|
/songs/1996/xm/v/vs_feb9.zip 326 **+ February 9th by Vadim VS
|
||
|
|
||
|
=----------------------------------------------------------[Graphics:General]-=
|
||
|
Location /demos/graphics Size Rated Description
|
||
|
=-------------------------------- ---- ----- ---------------------------------=
|
||
|
/images/1996/l/lt-appol.zip 170 *** Dance with the Planets by Light
|
||
|
|
||
|
=-----------------------------------------------------[Graphics:Non-Reviewed]-=
|
||
|
Location /demos/graphics Size Description
|
||
|
=-------------------------------- ---- ---------------------------------------=
|
||
|
/programs/players/cybrshow.zip 1417 Fractal Arts by Cyberlight Matrix
|
||
|
|
||
|
=----------------------------------------------------------------------[Code]-=
|
||
|
Location /demos/code Size Rated Lang Description
|
||
|
=-------------------------------- ---- ----- ---- ----------------------------=
|
||
|
/demosrc/micsrc41.zip 185 **+ A--- BBS intro w/environ. mapping
|
||
|
/graph/3d/vga-vul3.zip 14 **+ A--P How to do simple 3D
|
||
|
/graph/3d/vga-vul4.zip 9 *** A--- Simple 3D in ASM
|
||
|
/graph/examples/bp-hires.zip 14 ** A--- 640x480x16 by Ash/Bunghole
|
||
|
/graph/fade/vga-vul2.zip 20 *** A--- ASM source on palette fading
|
||
|
/graph/gouraud/gvector2.zip 73 *** --C- Gouraud vectors by Tumblin'
|
||
|
/graph/stars/vga-vul5.zip 10 *** A--P How to do a simple starfield
|
||
|
/libs/adip.zip 708 ** ABCP SB Awe 32 developers pack
|
||
|
/libs/asm_good.zip 118 ***+ A--- Lots of misc. ASM code
|
||
|
/pmode/pmw122.zip 127 ****+ --C- Pmode/W v. 1.22 by DD/Ren.
|
||
|
/sound/cpmik02.zip 18 ** A--- S3M/GUS player
|
||
|
/sound/fmoddoc2.zip 390 ***** --C- Great MOD/S3M/player info!
|
||
|
/sound/mxmp12.zip 92 **** A-C- Tiny .XM/GUS player by Cubic
|
||
|
/text/ffmts002.zip 102 ***+ ---- Music file formats info.
|
||
|
/text/vga-info.zip 139 ***+ ---- Graphical pragmatics via VGA
|
||
|
/tutorial/basicdoc.zip 4 *** ---- Beginner's guide to VGA
|
||
|
/tutorial/dn114_3d.zip 14 ****+ --CP Intro to 3D by Kiwidog
|
||
|
/tutorial/fh-3dtut.zip 12 ***+ A--P 3D vector tutorial
|
||
|
/tutorial/kmagv2.zip 54 **+ A--P King's programming mag. #2
|
||
|
/tutorial/kmagv3.zip 63 *** A-CP King's programming mag. #3
|
||
|
/tutorial/tweakdoc.zip 5 ***+ ---- Beginner's guide to Mode X
|
||
|
/utils/alabv12.zip 185 ****+ A--- ASM IDE, w/syntax highlight.
|
||
|
/utils/pp104swv.zip 44 ** ---P Protect .exes from hacking
|
||
|
|
||
|
|
||
|
=-[Articles]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
=---------------------------------------------------[Introduction]--[Snowman]-=
|
||
|
|
||
|
Hello all, and welcome to DemoNews issue 118.
|
||
|
|
||
|
First off, I'd like you all to note that we've passed 2000 subscribers this
|
||
|
week! I consider that a milestone. When I started helping with DemoNews
|
||
|
that number was under 300. My personal thanks goes to all those who have
|
||
|
helped contribute over the past several years, as well as those who have
|
||
|
supported and subscribed to this online publication. I used to ask the
|
||
|
question "When will we finally saturate the scene?" I now believe that we
|
||
|
won't. Not only are huge segments of the demo scene finally getting
|
||
|
online, but countless individuals are now just discovering it.
|
||
|
|
||
|
After reading almost all of "The Road Ahead" by Bill Gates, I am inspired.
|
||
|
Our little listserver error two weeks ago is only the first of many
|
||
|
creative and new ideas.
|
||
|
|
||
|
For the past couple of weeks, our site has been getting a lot of action.
|
||
|
The /pub/demos tree is seeing 3.5Gb a transferred a day on average (that's
|
||
|
about 100Gb a month)! Believe it or not, this isn't even 1/3rd what the
|
||
|
/pub/games archive is getting. Now, I like games just as much as the next
|
||
|
guy. However, games aren't really my first love. I encourage you all to
|
||
|
use our demo archive and download as much as possible, as often as
|
||
|
possible, at weird hours of the day, while eating, while in the shower,
|
||
|
while sleeping, while doing your homework... :) Let's see if we can hit a
|
||
|
5Gb day!
|
||
|
|
||
|
Don't forget to submit articles to Darkness / Imphobia for the upcoming
|
||
|
diskmag.
|
||
|
|
||
|
Snowman / Hornet - r3cgm@cdrom.com
|
||
|
|
||
|
|
||
|
=----------------------------------[Quotes Heard in the Demoscene]--[Trixter]-=
|
||
|
|
||
|
[This list was compiled by Trixter]
|
||
|
|
||
|
_____General Quotes
|
||
|
|
||
|
"Good code isn't good design, and good design doesn't need good code."
|
||
|
Charlatan
|
||
|
|
||
|
"Jezus Christ, are we still having this conversation?"
|
||
|
Luc Lodder, on the Amiga vs. PC debate.
|
||
|
|
||
|
"When the finish Head General sees the Russian army coming he just boots up
|
||
|
his PC and loads Second Reality. Then when all the ruskies are staring in
|
||
|
disbelief, a plane drops a bomb on them."
|
||
|
Tony, on how the Finnish demoscene could help in the Finnish army
|
||
|
|
||
|
"The number of channels available with a PC trackers has led to a
|
||
|
generation of lazy mod composers. Instead of using a trick, let's use
|
||
|
another track!"
|
||
|
Moby / Nooon
|
||
|
|
||
|
"Hello, people!! Monitor manuals have H-Sync V-Sync tolerance listings for
|
||
|
a _REASON_!!"
|
||
|
Lance Kalzus, on reports that Xtal by Complex was blowing up monitors
|
||
|
|
||
|
"Moral: Never underestimate democoders..."
|
||
|
PsychoMan, on people who think democoding is a limited art
|
||
|
|
||
|
"Personally, I'd be surprised to see someone release something on CD that
|
||
|
was made up of huge, total, game. Come to think of it, you could create
|
||
|
RPGs that take an average of 1.4yrs to complete, if you just stretched your
|
||
|
mind and put a GAME on the CD instead of an 'interactive movie'."
|
||
|
Mr. P, on the future of gaming
|
||
|
|
||
|
"The trick is to forget about writing something good and pull cheese out of
|
||
|
your butt."
|
||
|
Necros, on how to win the '20-Minutes' compo
|
||
|
|
||
|
"A DOT!!!! A FUCKING DOT!!!! YEAH!!!!!!!"
|
||
|
Chris Chapin, on getting his first graphic element working
|
||
|
|
||
|
"I have to figure out what 'music good moose american!' means."
|
||
|
Leviathan, on translating some of the european fan mail he gets
|
||
|
|
||
|
"The life of the coder is that of the hermit, except the hermit can't make
|
||
|
shadebobs."
|
||
|
Leviathan, on coding
|
||
|
|
||
|
"You're just trying to find texture coordinates, not to be mathematically
|
||
|
correct."
|
||
|
Midnight, on how accurate you should be while coding environment mapping
|
||
|
|
||
|
"People often forget God's contribution to the demo scene. He coded some
|
||
|
brilliant effects, all real-time as well."
|
||
|
Lew
|
||
|
|
||
|
"As we all know, the audience voted for best productions at Juhla Pi. And,
|
||
|
as always - audience was stupid."
|
||
|
Jmagic, on why the world's first real-time raytracing demo didn't win 1st
|
||
|
place at Juhla Pi
|
||
|
|
||
|
_____On Having Sex
|
||
|
|
||
|
"Coders do it with a routine."
|
||
|
Otto Chrons
|
||
|
|
||
|
"Coders do it with bugs."
|
||
|
Trixter
|
||
|
|
||
|
"Trackers do it with rhythm."
|
||
|
Floss
|
||
|
|
||
|
"Trackers like to slide up & down."
|
||
|
Charlatan
|
||
|
|
||
|
_____You Know You've Been Democoding Too Long When...
|
||
|
|
||
|
"...You think 'hey, the phong shading on this toilet seat is really cool'
|
||
|
and move it up and down a few times just to watch the highlights..."
|
||
|
Sam
|
||
|
|
||
|
"...You're in a train looking out of the window, and you notice the
|
||
|
high-quality multi-layer parallax scrolling."
|
||
|
Sam
|
||
|
|
||
|
"...You spend an hour in the tub trying to figure out displacement."
|
||
|
Leong
|
||
|
|
||
|
"...You walk along a wall and are impressed that it's not pixelated,
|
||
|
even at close range."
|
||
|
Dag-Erling Smrgrav
|
||
|
|
||
|
"...You notice how the faucets in bathrooms are envirovment mapped
|
||
|
with a nice metal-looking texture..."
|
||
|
Jyrki Saarinen
|
||
|
|
||
|
"...You move objects around to make sure the clipping and culling
|
||
|
routines are working."
|
||
|
Quantum Porcupine
|
||
|
|
||
|
"...You spill or mess up something and the first reaction that come
|
||
|
to mind is 'undo'."
|
||
|
Stephan
|
||
|
|
||
|
"...You watch the "Mortal Kombat" movie, and during the part where
|
||
|
Liu Kang does a flip off a wall, you absent-mindedly say, 'I wonder
|
||
|
if that was calculated real-time.'"
|
||
|
Dominion Arcana
|
||
|
|
||
|
Trixter / Hornet - trixter@ftp.cdrom.com
|
||
|
|
||
|
|
||
|
=--------------------------[10 Ways NAID '95 Will Differ from NAID '96]--[GD]-=
|
||
|
|
||
|
_____Introduction
|
||
|
|
||
|
Are you considering going to NAID this year? Not sure if you want to go or
|
||
|
not? Heard some things that made you suspicious?
|
||
|
|
||
|
Many people seem unsure whether or not they want to make the sacrifice of
|
||
|
time and money to attend. With pressures of school and final exams, some
|
||
|
potential attendees are unsure if they will make it to NAID 1996.
|
||
|
|
||
|
Following is a list of ten ways that NAID 1996 will differ from NAID 1995.
|
||
|
Hopefully, you will see that this is to be a party you won't want to miss.
|
||
|
|
||
|
_____Reason 01: From Spotlights to Lasers
|
||
|
|
||
|
The NAID organizers have been discussing the possibility of a laser light
|
||
|
show this year. Remember those "dance floor" style spotlights they used last
|
||
|
year? Well, those would be replaced by laser technology.
|
||
|
|
||
|
This will improve the visual effects greatly. By adding laser lights to the
|
||
|
setup, it will create an incredible effect for those who want to feel as if
|
||
|
they're at a real rave. Even better, anyone needing laser surgery can just
|
||
|
position themselves appropriately between laser beams and save thousands of
|
||
|
dollars in medical fees.
|
||
|
|
||
|
_____Reason 02: Parlez-vous francais?
|
||
|
|
||
|
The language barrier was one difficult aspect for some Americans traveling
|
||
|
to Montreal. As those who live in Montreal speak french as their primary
|
||
|
language, verbal communication was a problem.
|
||
|
|
||
|
With a year and two months between NAID 1995 and NAID 1996, hopefully some
|
||
|
people have tried to work on the issue of the language barrier. However, I
|
||
|
suggest a French-English dictionary, as some of your good friends who know
|
||
|
french are most likely going to only teach you french phrases that
|
||
|
translate into something like "You look like my mother, you stupid
|
||
|
pancake!" or "Will you go to bed with me, you revolting jackass?"
|
||
|
|
||
|
_____Reason 03: Price Difference
|
||
|
|
||
|
People have been talking about the difference in ticket prices this year. The
|
||
|
admission fee is CA$20, as compared to last year which cost CA$7.
|
||
|
|
||
|
The organizers have decided to combat complaints about the sudden price
|
||
|
increase with some special deals:
|
||
|
|
||
|
Three-Arm Discount (TAD) : All persons with three arms shall receive 50% off
|
||
|
the admission fees.
|
||
|
|
||
|
Two-Foot Discount (TFD) : Anyone who stands less than two feet tall will
|
||
|
only need to pay CA$2 for admission.
|
||
|
|
||
|
Green-Hair Discount (GHD): Anyone entering with green hair will be admitted
|
||
|
for CA$5. Persons taking advantage of the GHD must
|
||
|
pose as plants any time someone's parents walk by.
|
||
|
|
||
|
_____Reason 04: The wrath of PeriSoft
|
||
|
|
||
|
Ever since last year, PeriSoft has been plotting his revenge against the
|
||
|
"evil forces of Hornet" for the comment about him in the Hornet NAID report.
|
||
|
This year, witness it live as the drama unfolds.
|
||
|
|
||
|
Supposedly, one of PeriSoft's revenge tactics will be to bring an Alannis
|
||
|
Morrisette CD and secretly place speakers in the Hornet room through which
|
||
|
this CD will be played constantly. The results of such an experiment could
|
||
|
have drastic effects, so watch and see what happens.
|
||
|
|
||
|
_____Reason 05: Necros
|
||
|
|
||
|
Dungeon Dwellers Design is a USA-based demo group that was in attendance at
|
||
|
NAID 1995. They also entered a demo into the competition. They took many
|
||
|
pictures at NAID and released a party report.
|
||
|
|
||
|
Unfortunately, DDD made several errors in their NAID report, which confused
|
||
|
some people as to who won which compo with which entry.
|
||
|
|
||
|
This year, Necros may fall victim to a large amount of lamers asking him if
|
||
|
he is going to write another song like his hit, "Can't Take the Bus."
|
||
|
|
||
|
_____Reason 06: The Snowman Speech
|
||
|
|
||
|
Before the closing ceremony last year, Snowman presented a very memorable
|
||
|
speech to the soon-to-be-departing crowd. As many people complimented his
|
||
|
efforts, he will again be making a speech this year.
|
||
|
|
||
|
However, this year's speech proves to be more than a monologue, as Snowman
|
||
|
recently released his cast list:
|
||
|
|
||
|
Ara (formerly Epeius) ............... Human "beat box"
|
||
|
The Zapper .......................... Bass Guitar
|
||
|
Maelcum ............................. "Move it Move it" voice
|
||
|
Miss Saigon ......................... "Whoo! Yeah!" voice
|
||
|
|
||
|
_____Reason 07: Drugs and Alcohol
|
||
|
|
||
|
Drugs and Alcohol are prohibited in the school at which NAID 1996 will be
|
||
|
held. Because of this, the organizers are making special arrangements to
|
||
|
inspect the belongings of those suspected to have any illegal possessions.
|
||
|
|
||
|
They are arranging a "we get half, you get half" deal with anyone who
|
||
|
wishes to consume said possessions at the party place. Be sure to stock up
|
||
|
and bring twice your normal supply.
|
||
|
|
||
|
_____Reason 08: 1-900-NAID-FUN
|
||
|
|
||
|
The organizers have been so overwhelmed with telephone calls that they have
|
||
|
set up this 1-900 answering service. Callers will be able to get their
|
||
|
questions answered and even get a chance to win some great prizes! The
|
||
|
prize list follows:
|
||
|
|
||
|
Free NAID tickets will be given out to every 1000th caller
|
||
|
|
||
|
If you are able to "Name this Hadji S3M" you can win one of these
|
||
|
fabulous prizes:
|
||
|
- Year old subs (leftover food from Subway, who served food at NAID
|
||
|
1995 and forgot to clean up)
|
||
|
- Year old tshirts (they were left outside during a rainstorm, and
|
||
|
put through a very powerful dryer. All shirts are
|
||
|
now exactly 7 sizes smaller than stated on the
|
||
|
label)
|
||
|
|
||
|
Each call costs $1.00 a minute. If you're under 18, be sure to get
|
||
|
permission from your parent or legal guardian before calling.
|
||
|
|
||
|
_____Reason 09: The "Deep-Six Demo Compo"
|
||
|
|
||
|
Is your computer waterproof? Ever thought of putting it inside a sealed
|
||
|
plastic bag and submerging it in water?
|
||
|
|
||
|
Since the pool was not used much last year, the organizers have introduced
|
||
|
this competition, which states that "Computers will be submerged into the
|
||
|
pool after starting a popular European demo. The owner of last computer to
|
||
|
remain running underwater is the winner.
|
||
|
|
||
|
The organizers are seeking judges for this competition. To be eligible, you
|
||
|
need to be able to hold your breath for 10 minutes, have a certified
|
||
|
lifeguard license, and sign a release form stating that the organizers are
|
||
|
"not responsible for drowning, choking, or excess water intake."
|
||
|
|
||
|
_____Reason 10: Electricity
|
||
|
|
||
|
Last year the organizers were very fortunate to not experience any amount
|
||
|
of interruption in the power supply. There were no power failures and no
|
||
|
equipment was damaged by a spike or surge.
|
||
|
|
||
|
This year, you won't want to miss out on your chance to fry the power
|
||
|
system! Be the lamer responsible for a blackout during the demo
|
||
|
competition! Get hundreds of angry partygoers chasing after you!
|
||
|
|
||
|
To enter in this competition, all you need is an electrical device which,
|
||
|
when plugged in, will overload the circuit breaker and cause a power
|
||
|
outage. Winners will receive a first-class shunning.
|
||
|
|
||
|
_____Conclusion
|
||
|
|
||
|
This guide is your road map to fun at NAID 1996! Be sure to attend this
|
||
|
event because it only happens once a year.
|
||
|
|
||
|
Enjoy the show, meet new friends, and learn how to swear at your parents in
|
||
|
a different language! What more could you ask for?
|
||
|
|
||
|
GD / Hornet - gd@ftp.cdrom.com
|
||
|
|
||
|
|
||
|
=-----------------------------------------[Funktracker Port to Linux]--[JsNO]-=
|
||
|
|
||
|
I've began work on porting Funktracker from the DOS32 protected mode
|
||
|
platform over to X11/Xview, first for Linux, then other Unix's. As this is
|
||
|
mainly an exercise to learn X-windows programming, I will be taking it
|
||
|
easy. It may be a while before there is a releasable version.
|
||
|
|
||
|
NOW would be a good time to tell me anything that you want in there. I've
|
||
|
had wades of email about requested extras and changes that people wanted in
|
||
|
1.08b, but couldn't, due to the fact the requests were never considered in
|
||
|
the initial contingency of FunkTracker. So, if you tell me now in the
|
||
|
designing stage, it will be far easier for me to put in.
|
||
|
|
||
|
I'm going to attempt to give it the look and feel of the original
|
||
|
FunkTracker (in an Xwindows sort of way), so, if you don't like the
|
||
|
original Funky style interface, tell me now, and i'll alter it on weighted
|
||
|
opinion.
|
||
|
|
||
|
See ya.
|
||
|
|
||
|
JsNO / Super Real Darwin - root@superr.topend.com.au
|
||
|
|
||
|
|
||
|
=------------------------------[Intro to 3D Graphics - Volume 03]--[Kiwidog]-=
|
||
|
|
||
|
_____Introduction
|
||
|
|
||
|
Howdy everyone!
|
||
|
|
||
|
Time for round three... :-)
|
||
|
|
||
|
This is the last introductory article before we dive into polygon fillers,
|
||
|
and it's something that's crucial to any effective 3D system. You may be
|
||
|
asking yourself, "Hey, I can do projection and rotation now, isn't that all
|
||
|
I need to start making solid objects?" Well, not quite.
|
||
|
|
||
|
Let's say you want to make a cube. You know how to project the cube's
|
||
|
vertices, so that's fine. You can rotate the vertices too, so that's not a
|
||
|
problem either. And let's say you know how to do polygon filling too...
|
||
|
well what happens when you start rotating the cube around?
|
||
|
|
||
|
A big mess. :) Sides in the back show up half the time, so the cube
|
||
|
doesn't look solid at all. And then you decide you want to add
|
||
|
lightsourcing... uhh.... wait... lightsourcing? How do I do that again?
|
||
|
|
||
|
Yup, something's definitely missing. :-)
|
||
|
|
||
|
It turns out that backface removal, lightsourcing, and a whole mess of
|
||
|
other 3D-related issues often stem down to one small, yet very important
|
||
|
math concept...
|
||
|
|
||
|
The normal.
|
||
|
|
||
|
_____What the Heck's a "Normal"?
|
||
|
|
||
|
The normal is just the name of the vector that's perpendicular to a plane.
|
||
|
It's as simple as that (actually, I should be using the word "orthogonal",
|
||
|
since that's the real name for perpendicular in 3D, but you get the idea).
|
||
|
That's all it is. Every 3D plane in space has a normal; it's just the line
|
||
|
that sticks straight out of that plane.
|
||
|
|
||
|
So what's so useful about normals? Well, if we have a 3D surface (like a
|
||
|
polygon face), the normal tells us where the polygon is facing... it's the
|
||
|
line that the polygon is "looking at", and that has a LOT of uses.
|
||
|
|
||
|
For one, backface removal. You only want to see a polygon face (like on a
|
||
|
cube) when the surface is facing toward you. If it's facing away from you,
|
||
|
you shouldn't see it (unless you want paper-thin objects). So the normal
|
||
|
is very useful here.
|
||
|
|
||
|
And lightsourcing is entirely about normals. If you take the angle between
|
||
|
the normal of a surface and the vector of surface to the lightsource, you
|
||
|
can find out how much it's facing that lightsource and can use that for
|
||
|
brightness. We'll be using this fact a lot with Lambert, Gouraud, and
|
||
|
Phong shading, as well as Environment Mapping.
|
||
|
|
||
|
There are also other nice thing normals are used for, like calculating BSP
|
||
|
trees and such. The list goes on and on....
|
||
|
|
||
|
But I'm probably overwhelming you with all this. Let's take it one step at
|
||
|
a time, and all the rest of the pieces will face into place later. Don't
|
||
|
worry if you're confused for the moment... it'll click soon enough. :)
|
||
|
|
||
|
_____Finding the Normal of a Plane
|
||
|
|
||
|
You've already dealt with a few normals - the axes. The Z axis sticks
|
||
|
straight out of the XY plane, which means (tada!) that the Z axis is the
|
||
|
normal of the XY plane. Likewise, the X axis is the normal of the YZ
|
||
|
plane, and the Y axis is the normal of the ZX plane.
|
||
|
|
||
|
But what about arbitrary surfaces? Most of the time, with our 3D objects,
|
||
|
we won't know where they're facing. They won't be on the axes most of the
|
||
|
time, that much is for certain. So what do we do to find these special
|
||
|
vectors?
|
||
|
|
||
|
_____The Dot and Cross Products
|
||
|
|
||
|
There are two very useful operations in linear algebra called the Dot
|
||
|
Product, and the Cross Product. They're not really hard at all; the
|
||
|
equations are pretty simple. But they come in very handy, as you'll soon
|
||
|
see. Like the Trig identities, these are two of the most important things
|
||
|
you'll ever use in 3D.
|
||
|
|
||
|
The Dot Product is just a value (or "scalar", in linear algebra terms).
|
||
|
It's a function of two vectors, and usually denoted with a "." character.
|
||
|
If we have two vectors A and B,
|
||
|
|
||
|
A.B = (Ax * Bx) + (Ay * By) + (Az * Bz)
|
||
|
|
||
|
That's it. Just multiply the XYZ parts together of each vector, add them
|
||
|
up, and the resulting number is your dot product. What's it for? We'll
|
||
|
see soon enough...
|
||
|
|
||
|
Now the Cross Product is a little more complicated of an equation. Like
|
||
|
the Dot Product, it's a function of two vectors. But unlike the Dot
|
||
|
Product, the result is not a scalar value.... it's another vector. If we
|
||
|
have our A and B vectors, and C is the cross product (denoted A x B),
|
||
|
|
||
|
C = A x B
|
||
|
|
||
|
Cx = (Ay * Bz) - (By * Az)
|
||
|
Cy = (Az * Bx) - (Bz * Ax)
|
||
|
Cz = (Ax * By) - (Bx * Ay)
|
||
|
|
||
|
That's how we get each of the XYZ components of the cross product vector.
|
||
|
Well what's C after we do this? A very nice thing... it's the vector
|
||
|
that's ORTHOGONAL to A and B.
|
||
|
|
||
|
Yup, the Cross Product is our normal! :-)
|
||
|
|
||
|
Sure enough, if you check these equations against some normals we know,
|
||
|
like the axes mentioned above, it turns out that
|
||
|
|
||
|
(1,0,0) x (0,1,0) = (0,0,1) Z axis is orthogonal to the X and Y axes.
|
||
|
(0,1,0) x (0,0,1) = (1,0,0) X axis is orthogonal to the Y and Z axes.
|
||
|
(0,0,1) x (1,0,0) = (0,1,0) Take a wild guess. :-)
|
||
|
|
||
|
Now, we can't necessarily use this directly with our polygons. I mean,
|
||
|
with our polys all we have is a set of vertices (each 3 for a triangle, 4
|
||
|
for a quadrilateral, whatever). We don't have two vectors. So we need to
|
||
|
find two vectors in our poly that we can shove into this cross product
|
||
|
equation, and find our normal.
|
||
|
|
||
|
How to do that? Not too hard, really. We can form two vectors from any
|
||
|
three points in a poly. Say we have a quadrilateral polygon.....
|
||
|
|
||
|
P2
|
||
|
. P1
|
||
|
.
|
||
|
|
||
|
|
||
|
|
||
|
.
|
||
|
P3 . P4
|
||
|
|
||
|
Okay, all we need to do is get two tail-to-tail vectors from the poly.
|
||
|
Solution? Simple, just pick a point, and use the vectors to the two points
|
||
|
"connected" to it along the edges...
|
||
|
|
||
|
P2
|
||
|
.___ A P1
|
||
|
----.
|
||
|
\
|
||
|
\ B
|
||
|
\
|
||
|
.
|
||
|
P3 . P4
|
||
|
|
||
|
Be warned, though.... the cross product function is NOT commutative. That
|
||
|
is, A x B is NOT the same as B x A. As a matter of fact, B x A is the
|
||
|
exact OPPOSITE vector of A x B.... it's the same line, just pointing in the
|
||
|
other direction! :)
|
||
|
|
||
|
How to know which one to use as A and which as B? It depends on what kind
|
||
|
of objects you're using. If you're importing from a modeler of sorts, most
|
||
|
modelers either order the vertices a certain way or have some kind of field
|
||
|
telling you which way the normal is. Then you'll know which vector is
|
||
|
supposed to be first, so your normal is in the right direction.
|
||
|
|
||
|
Otherwise, if you're making your objects manually, you'll have to be a
|
||
|
little more innovative. Many people like to create their faces so the
|
||
|
vertices go in either a consistent clockwise or counter-clockwise order.
|
||
|
Then you start at a consistent point in the polygon (like the first
|
||
|
vertex), and you know which point goes with which vector.
|
||
|
|
||
|
It's really a matter of taste, but whatever you do, you should be
|
||
|
consistent. Manually correcting normals that go wrong is a real pain in the
|
||
|
rear, so getting the system down right the first time will help you a lot
|
||
|
in the long run.
|
||
|
|
||
|
(BTW... in the above ASCII picture, the order that A and B are in will
|
||
|
result in a normal that goes up, towards where the "P1" label is).
|
||
|
|
||
|
Now to get nice, accurate normals, we don't want the poly's location in
|
||
|
space to have any effect on it... true "vectors" aren't points, they're
|
||
|
rays going from the origin to a point. Well, P1 probably isn't going to be
|
||
|
at (0,0,0). So for the cross product we need to calculate the vertices as
|
||
|
if it were. This is just done by translating the points, subtracting P1
|
||
|
from both the P2 (for vector A) and from P4 (for vector B)...
|
||
|
|
||
|
A = (P2 - P1)
|
||
|
B = (P4 - P1)
|
||
|
|
||
|
Bam, now we just shove A and B into the cross product formula, and out
|
||
|
comes our normal. Almost.
|
||
|
|
||
|
(Don't you just LOVE these "almosts" and "not quites"? :-)
|
||
|
|
||
|
_____Size Matters
|
||
|
|
||
|
Only one more thing we have to do to the normal to get it exactly the way
|
||
|
we want it. We need to scale it down (or up), so that the vector has an
|
||
|
exact length of 1. Why 1? Because having normals of length 1 is a really
|
||
|
nice thing as far as calculation is concerned. It's mainly for the "angle
|
||
|
between" equation we need for lightsourcing. I'll get to all that in a
|
||
|
little bit, but for now, just trust me.... we want it one unit in length.
|
||
|
:)
|
||
|
|
||
|
Doing that isn't really difficult... we just use the distance formula. From
|
||
|
algebra you probably remember that in 2D, the distance between any two
|
||
|
points is
|
||
|
|
||
|
length = sqrt( (x2-x1)^2 + (y2-y1)^2 )
|
||
|
|
||
|
That gives us the distance, or length, of that line segment. The same
|
||
|
thing applies in 3D, by adding the Z component...
|
||
|
|
||
|
length = sqrt( (x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2 )
|
||
|
|
||
|
Well a vector has just one point... the other point is at the origin, so if
|
||
|
we want to find the length of our normal, we just set point 1 to (0,0,0),
|
||
|
and
|
||
|
|
||
|
length = sqrt( x^2 + y^2 + z^2 )
|
||
|
|
||
|
Odds are, when you pump in your normal's values you got from the cross
|
||
|
product, the length is NOT going to be equal to 1. It could be 0.2, it
|
||
|
could be 10.583, it could be three-thousand-something. Anything. Well
|
||
|
since all we care about is direction, not length, we can divide every XYZ
|
||
|
component in the normal by its length, and the new length will become 1.
|
||
|
|
||
|
As an example, say our normal was (3,5,2). The length would be
|
||
|
|
||
|
length = sqrt( 3^2 + 5^2 + 2^2 ) = (9+25+4) = 38
|
||
|
|
||
|
So if we divide each component by 38, our final, scaled normal would be
|
||
|
|
||
|
(3/38, 5/38, 2/38)
|
||
|
|
||
|
Now as you can see, if all our normals are going to be length 1, then we
|
||
|
need to use decimal places.... no component is ever going to be above 1 in
|
||
|
size. But using floating point is incredibly slow, and pure integers don't
|
||
|
allow for decimal places. The solution? Fixed point.
|
||
|
|
||
|
_____A Sidetrack on Fixed Point
|
||
|
|
||
|
Fixed point is an easy way to represent non-integer numbers with only
|
||
|
integers in the processor. It's done by taking a certain number of bits in
|
||
|
a register, and dedicating them to decimal places instead of integer
|
||
|
values. Like if we have a 16-bit word, we can do 8.8 fixed point by using
|
||
|
the upper 8 bits as the "whole" portion of the number, and the lower 8 bits
|
||
|
as the "fractional" portion.
|
||
|
|
||
|
Examples of 8.8 fixed point....
|
||
|
|
||
|
1.0 = 0100h
|
||
|
1.5 = 0180h
|
||
|
0.25 = 0040h
|
||
|
3.75 = 03C0h
|
||
|
5.125 = 0520h
|
||
|
|
||
|
...and so on. All we're doing is using the high byte as the whole, and the
|
||
|
low byte as the precision. How precise? Well since we have 8 bits in the
|
||
|
fraction, it means we can go down to 1/256 for a fractional value. The more
|
||
|
the fractional bits you use, the more accurate your decimal places can
|
||
|
be... but the fewer number of whole-number bits you have left (so your
|
||
|
value can't go up as high).
|
||
|
|
||
|
Sure enough, you're not limited to equal splits. With 16 bits you can do
|
||
|
things like 15.1 fixed point (which only goes down to 0.5 for decimal units
|
||
|
but allows numbers up to 32767), or you can do 1.15, which can only have a
|
||
|
whole number of 0 or 1, but goes down to 1/32768 of decimal accuracy. You
|
||
|
choose what works well for your system.
|
||
|
|
||
|
(Incidentally, since I code 32-bit mostly these days, I use 16.16 fixed
|
||
|
point for pretty much everything 3D-wise. It's accurate enough in decimal
|
||
|
places, yet has wholes up to 64k which is a nice range).
|
||
|
|
||
|
To sum up, fixed point is just treating integers as fractional numbers by
|
||
|
working with the numbers a few powers of 2 above what the number actually
|
||
|
means. In 8.8, 0100h (256) means 1, 512 means 2, 768 means 3, etc...
|
||
|
you're just scaling the operations up a bit so you can stick with integer
|
||
|
operations.
|
||
|
|
||
|
Adding and subtracting fixed point is just like regular integer add and
|
||
|
sub. You don't have to do anything special...
|
||
|
|
||
|
1.5 + 1.5 = 3.0 0180h + 0180h = 0300h
|
||
|
2.75 - 2.25 = 0.5 02C0h - 0240h = 0080h
|
||
|
|
||
|
...and so on. On the other hand, multiplication and division have to be
|
||
|
adjusted by the number of places in your precision, since the resulting
|
||
|
number would be too high for multiply, and too low for divide....
|
||
|
|
||
|
1.5 * 3.0 = 4.5 0180h * 0300h = 048000h
|
||
|
NOPE! We have to divide by 100h (8 bits precision).
|
||
|
0180h * 0300h = 048000h / 100h = 0480h (correct)
|
||
|
|
||
|
Likewise, division needs to get multiplied by your precision. This must be
|
||
|
done BEFORE you divide, or you'll end up losing all your decimal places.
|
||
|
|
||
|
7.5 / 2.5 = 3.0 0780h / 0280h = 0003h
|
||
|
WRONG! We need to multiply....
|
||
|
0780h * 0100h = 078000h / 0280h = 0300h (correct)
|
||
|
|
||
|
Note that this means for multiply and divide that you'll need more space
|
||
|
than just what's in your fixed point registers. Luckily multiply and
|
||
|
divide on the Intel processors multiply into and from EDX:EAX, so you've
|
||
|
got extra space already even if you're using assembly language. And the
|
||
|
adjustment mul/divs are all powers of two, so you can use bit shifts
|
||
|
instead (if you are using 386 regs, make sure you look up the SHLD and SHRD
|
||
|
instructions... they come in real useful for this...)
|
||
|
|
||
|
Okay, enough of that sidetrack. That's the basics of fixed point. It's an
|
||
|
excellent alternative to floating point, and it's the only way to get
|
||
|
really good speed with 3D on an integer unit, since you can't use fast
|
||
|
normals that aren't 1 unit in length.
|
||
|
|
||
|
That's all you need to know about finding normals! :-) Here's the quick
|
||
|
summary. To get a normal from any polygon (with any number of vertices)
|
||
|
|
||
|
1. Choose three vertices from the poly that are connected by two edges. The
|
||
|
middle vertex is the base of both your vectors, so translate all three
|
||
|
points so that this base point is at the origin.
|
||
|
|
||
|
2. The two vectors are the two other points after translation. Choose your
|
||
|
first and second vector in the right order so that the normal goes in
|
||
|
the direction you want it, "in" or "out", so to speak. If your vertex
|
||
|
ordering is consistent or you're importing from a modeler, this
|
||
|
shouldn't be a big problem.
|
||
|
|
||
|
3. Take the cross product of the two vectors, in the right order.
|
||
|
|
||
|
4. Scale the cross product down so its length is equal to 1. This is your
|
||
|
final normal for the poly (yay!) :)
|
||
|
|
||
|
_____You Want Me To Do All That REALTIME?!?
|
||
|
|
||
|
Heck no! :) Calculating normals for every surface every frame would be
|
||
|
incredibly slow. Major MAJOR waste of time. But you don't have to worry
|
||
|
about that, because you can precalculate your normals for the original
|
||
|
object, and guess what?
|
||
|
|
||
|
If you rotate the normals by the same angles that you rotate the object,
|
||
|
the normals will still be correct! :-)
|
||
|
|
||
|
So just generate your normals when you load up your object, or store them
|
||
|
in the object file itself (if you have your own file format, this can be an
|
||
|
easier option). As you rotate your object by rotating all the vertices,
|
||
|
just treat the normals like regular vertices. So when rotating a cube, for
|
||
|
example, you won't be rotating 8 points... you'll be rotating 14 points,
|
||
|
i.e. the 8 vertices and the 6 normals.
|
||
|
|
||
|
_____In Our Next Episode
|
||
|
|
||
|
There are certainly other ways to deal with normals besides straight
|
||
|
rotation and such, and I'll show you these methods as time goes on. We'll
|
||
|
also be using these normals (and the thus-far-useless Dot Product) next
|
||
|
time, when we start our polygon filling escapade! :) The next article will
|
||
|
cover how to fill polygons with a flat color, and also how to lightsource
|
||
|
that color using our normals, so don't throw this article away just yet...
|
||
|
this info will become very useful very quickly.
|
||
|
|
||
|
In the meantime, the supplement will have example source that shows how to
|
||
|
use normals for simple backface removal. I'll put a lot of comments in
|
||
|
there so you can see what the normals are doing to make it possible.
|
||
|
It's quite easy...
|
||
|
|
||
|
Anyway, take a look at that source (in Pascal and C, once again... BTW some
|
||
|
people have asked me if I'll be doing more ASM source later on, and the
|
||
|
answer is yes, I will be)... and play around with some of this stuff on
|
||
|
your own! :) I realize there's not much to gain from this article by
|
||
|
itself, but it'll give you time to get a very critical portion of your 3D
|
||
|
system going. Even if it's still wireframe, it's a big step.
|
||
|
|
||
|
_____BTW
|
||
|
|
||
|
The supplement files are being renamed from DNxxx_3D.ZIP to DN3D_x.ZIP.
|
||
|
This is because it seems I'm not going to make it for every single DemoNews
|
||
|
issue, so it's probably less confusing if I name them by volume number than
|
||
|
by DemoNews issue number. As such, this article's supplement will be at
|
||
|
|
||
|
ftp.cdrom.com/pub/demos/incoming/code/DN3D_3.ZIP
|
||
|
|
||
|
DN114_3D.ZIP and DN116_3D.ZIP will be renamed to DN3D_1.ZIP and DN3D_2.ZIP
|
||
|
within the next couple weeks, so don't be surprised if you don't find them
|
||
|
under their old filenames after a while. All new supplements will be in
|
||
|
|
||
|
/pub/demos/incoming/code/
|
||
|
|
||
|
and the previous ones will be under
|
||
|
|
||
|
/pub/demos/code/tutorial/
|
||
|
|
||
|
so look there if you don't find them in incoming.
|
||
|
|
||
|
Also, give me a couple days after this DemoNews's release to upload the
|
||
|
supplement file. I tend to write these articles a little close to the
|
||
|
wire, so I don't have time to get the supplement up immediately. If you
|
||
|
don't find it in /pub/demos/incoming/code, give it a day or two before
|
||
|
emailing me saying you can't find it.... it's probably just me being lazy.
|
||
|
:-)
|
||
|
|
||
|
Until next time...
|
||
|
|
||
|
Kiwidog / Hornet , Terraformer - kiwidog@vt.edu
|
||
|
|
||
|
|
||
|
=-[Subscribing]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
_____How to subscribe to DemoNews
|
||
|
|
||
|
Mail to : listserver@unseen.aztec.co.za
|
||
|
Body : subscribe demuan-list [first_name] [last_name]
|
||
|
|
||
|
The listserver will send DemoNews to your e-mail's return address.
|
||
|
|
||
|
_____Back Issues
|
||
|
|
||
|
Older issues of DemoNews can be located under /demos/hornet/demonews.
|
||
|
Newly released issues of DemoNews are posted to /demos/incoming/news.
|
||
|
|
||
|
|
||
|
=-[Closing]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
|
|
||
|
For questions and comments, you can contact us at r3cgm@cdrom.com
|
||
|
Your mail will be forwarded to the appropriate individual.
|
||
|
|
||
|
|
||
|
...........................................................End.of.DemoNews.118.
|
||
|
|