1258 lines
62 KiB
Plaintext
1258 lines
62 KiB
Plaintext
![]() |
.Start.of.DemoNews.123..............................................Size:63,577
|
|||
|
|
|||
|
______/\___________________________ __ ________________ ___ /\_______
|
|||
|
\____ \ ________ _ _ ______ \ / \| \ ________ | \/ ______/
|
|||
|
/ | \ :) \ \_/ \ | \ / \ \ _) \ | \______ \
|
|||
|
/ | \ \ | \ | \ / \ \ /~\ \ / \
|
|||
|
\_____ /_______/___| /________/ \____\_____/_______/_________/________/
|
|||
|
\_____/ |____/
|
|||
|
|
|||
|
| Subscribers : 2304
|
|||
|
DemoNews #123 - 15 May 1996 | Last Issue : 2208
|
|||
|
| Change : +96
|
|||
|
DemoNews is a newsletter for the demo scene. | Archive Size : 2377M
|
|||
|
It is produced by Hornet at ftp.cdrom.com. | Last Issue : 2645M
|
|||
|
Our demo archive is located under /pub/demos. | Remaining : 611M
|
|||
|
|
|
|||
|
==[Contents]===================================================================
|
|||
|
|
|||
|
Calendar
|
|||
|
Downloads
|
|||
|
Uploads
|
|||
|
Articles
|
|||
|
Introduction................................Snowman
|
|||
|
Announcing NAID 1996........................Struk
|
|||
|
A Graphician's Tip Book - Part 1............Shaithis
|
|||
|
Intro to 3D Graphics - Volume 05............Kiwidog
|
|||
|
NAID: As if You Were Here...................White Noise
|
|||
|
Imphobia 12 Voting..........................Darkness
|
|||
|
FunktrackerGOLD for Linux...................Jason Nunn
|
|||
|
Subscribing
|
|||
|
Closing
|
|||
|
|
|||
|
|
|||
|
==[Calendar]===================================================================
|
|||
|
|
|||
|
Date Event Location Concact Points (email has an '@')
|
|||
|
--------- ---------------- --------- ----------------------------------------
|
|||
|
31 May 96 Naid Canada naid@autoroute.net
|
|||
|
www.autoroute.net/~naid
|
|||
|
naid.conceptech.qc.ca
|
|||
|
02 Jun 96 The Scene Singapore ckiang@singnet.com.sg
|
|||
|
www.singnet.com.sg/~ckiang/tsc96.html
|
|||
|
07 Jun 96 Abduction Finland maurala@cc.hut.fi
|
|||
|
www.hut.fi/~maurala/abduction.html
|
|||
|
19 Jul 96 Flag Hungary tomcat2@ursus.bke.hu
|
|||
|
28 Jul 96 Summer Encounter Denmark rvc@vision.auc.dk
|
|||
|
www.vision.auc.dk/diffusion/SE96
|
|||
|
04 Aug 96 Summit Israel high.dive@kinneret.com
|
|||
|
|
|||
|
|
|||
|
==[Downloads]==================================================================
|
|||
|
|
|||
|
Combined Demos 1 0197 nooon_st.zip Gfx 1 0036 airwar.zip
|
|||
|
2 0175 animate.zip 2 0030 dst_frac.zip
|
|||
|
1 0334 cp16.zip 3 0171 inside1.zip 3 0026 veced300.zip
|
|||
|
2 0261 ft206.zip 4 0169 inside2.zip 4 0025 vamp10.zip
|
|||
|
3 0235 cp17.zip 5 0168 contrast.zip 5 0023 scarlet.zip
|
|||
|
4 0212 it202.zip 6 0156 fashion.a01 6 0019 girl3.zip
|
|||
|
5 0197 nooon_st.zip
|
|||
|
6 0185 scrmt321.zip Music 1 0334 cp16.zip Code 1 0177 3dsco20.zip
|
|||
|
7 0177 3dsco20.zip 2 0261 ft206.zip 2 0110 mphong.zip
|
|||
|
8 0175 animate.zip 3 0235 cp17.zip 3 0100 voxeltut.zip
|
|||
|
9 0171 inside1.zip 4 0212 it202.zip 4 0087 ccard.doc
|
|||
|
10 0169 inside2.zip 5 0185 scrmt321.zip 5 0081 voxelsp2.zip
|
|||
|
11 0168 contrast.zip 6 0160 m4w230sx.zip 6 0077 tpp1src.zip
|
|||
|
|
|||
|
Total downloads this week : 69,058
|
|||
|
|
|||
|
|
|||
|
==[Uploads]====================================================================
|
|||
|
|
|||
|
=----------------------------------------------------------(File Information)-=
|
|||
|
|
|||
|
Main site : USA ftp.cdrom.com/pub/demos
|
|||
|
|
|||
|
Mirrors : Sweden ftp.luth.se/pub/msdos/demos
|
|||
|
S. Africa ftp.sun.ac.za/pub/msdos/demos
|
|||
|
USA ftp.uwp.edu/pub/msdos/demos
|
|||
|
USA ftp.co.iup.edu/code
|
|||
|
|
|||
|
Other sites: Belgium hagar.arts.kuleuven.ac.be/demos
|
|||
|
Sweden ftp.arosnet.se/demo
|
|||
|
|
|||
|
Web pages : Denmark www.th-zwickau.de/~maz/sound.html
|
|||
|
Canada datex.ca/trax
|
|||
|
USA www.jax-inter.net/users/mblocker/demos
|
|||
|
U.K. www.dcs.ed.ac.uk/~mxr/gfx
|
|||
|
Belgium hagar.arts.kuleuven.ac.be/~sdog/party.html
|
|||
|
|
|||
|
All ratings are subjective.
|
|||
|
|
|||
|
=---------------------------------------------------------------------(Music)-=
|
|||
|
/demos/music Size Rated Description
|
|||
|
=------------------------------- ---- ----- ----------------------------------=
|
|||
|
/disks/1996/e/eh-0496.zip 1482 * 04/96 Pack by Exploding Hedgehogs
|
|||
|
/disks/1996/e/eh-best1.zip 806 *+ Best of...Vol. 1 by Exp. Hedgehogs
|
|||
|
/disks/1996/n/no-image.zip 841 **+ Images by J. Redfern
|
|||
|
/disks/1996/r/rpcarmgn.zip 1474 *+ Carmagnola by Red Power
|
|||
|
/disks/1996/s/sdc-0003.zip 1291 **+ Volume 3 by SDC
|
|||
|
/disks/1996/s/sdc-0004.zip 1239 **+ Volume 4 by SDC
|
|||
|
/disks/1996/s/secworld.zip 372 **+ Secret Worlds by Resound
|
|||
|
/disks/1996/t/tr-burn.zip 2086 *** Burning by Tracktor
|
|||
|
/disks/1996/t/tr-subl1.zip 1497 *** [1/2] Sublevel by Tracktor
|
|||
|
/disks/1996/t/tr-subl2.zip 1163 *** [2/2] Sublevel by Tracktor
|
|||
|
/disks/1996/t/tripto1a.zip 1459 ***+ [1/2] Tripout Volume 1 by Trip
|
|||
|
/disks/1996/t/tripto1b.zip 1485 ***+ [2/2] Tripout Volume 1 by Trip
|
|||
|
/disks/1996/t/trx0496a.zip 1222 **+ [1/2] 04/96 Pack by Traxx
|
|||
|
/disks/1996/t/trx0496b.zip 1256 **+ [2/2] 04/96 Pack by Traxx
|
|||
|
/disks/1996/t/trxds001.zip 1140 ** Deranged Songs Volume 1 by Traxx
|
|||
|
/disks/1996/u/u-flo.zip 761 *** Flo by Ultrabeat
|
|||
|
/disks/1996/u/unify2.zip 1036 ***+ Unification 2 by Aim Higher
|
|||
|
/disks/1996/w/wr-dipth.zip 593 **+ Diptheria by Wraith
|
|||
|
/disks/1996/z/zinc-gtf.zip 858 ** Groovy Time Fabric by Zinc
|
|||
|
/songs/1992/mod/p/pmb-rain.zip 143 **+ Cheek Rain by FX
|
|||
|
/songs/1993/mod/d/dancextc.zip 105 **+ Dance Xtc by Dune
|
|||
|
/songs/1994/mod/w/warsa-ny.zip 281 *** Warsaw-New York by DSX Design
|
|||
|
/songs/1994/s3m/c/csp.zip 99 + Carmel Snack Pack by dintel
|
|||
|
/songs/1994/s3m/h/hpl_32k.zip 15 *** Hpl-32k by Dune
|
|||
|
/songs/1994/s3m/j/jumper.zip 177 **+ Jumper by Aphex
|
|||
|
/songs/1994/s3m/m/mindcont.zip 75 **+ Mind Controller by Cyclone
|
|||
|
/songs/1994/s3m/t/t10-nghb.zip 111 *** Top 10 Neighbours by dune
|
|||
|
/songs/1994/xm/i/icedesrt.zip 344 **+ Ice Desert by Aphex
|
|||
|
/songs/1994/xm/k/kz-geoma.zip 306 **** Geomancer by Kal Zakath
|
|||
|
/songs/1994/xm/t/thegrdnb.zip 126 **+ The Garden Behind by Aphex
|
|||
|
/songs/1995/s3m/0-9/0que.zip 87 ** -QUE by Dune
|
|||
|
/songs/1995/s3m/a/arsa.zip 24 **+ Arsa Bamk by Dune
|
|||
|
/songs/1995/s3m/c/cages.zip 89 **+ Crystal Cages by Cyclone
|
|||
|
/songs/1995/s3m/c/ccs-glsw.zip 199 **** The GlassWalker by Aahz
|
|||
|
/songs/1995/s3m/c/control.zip 162 *** Control E by Dune
|
|||
|
/songs/1995/s3m/c/cover.zip 116 **** Cover of Darkness by Daedalus
|
|||
|
/songs/1995/s3m/c/crimson.zip 70 + Crimson Fantasy by Son Zoo
|
|||
|
/songs/1995/s3m/d/div-ultr.zip 156 *+ Decieving Delight by Diversion
|
|||
|
/songs/1995/s3m/d/dmk-eco.zip 157 *** Ecolove Remix by Hector
|
|||
|
/songs/1995/s3m/d/dmk-our.zip 146 **+ Our Time Alone by Hector
|
|||
|
/songs/1995/s3m/d/dmk-yoot.zip 400 *** Big Yoots Forever by Hector
|
|||
|
/songs/1995/s3m/f/first.zip 115 *** The First by Roxton-Pond
|
|||
|
/songs/1995/s3m/f/frequent.zip 157 ***+ Frequent by Dune
|
|||
|
/songs/1995/s3m/h/harmitus.zip 6 **** Harmitus Painaa Mieltani by Dune
|
|||
|
/songs/1995/s3m/i/imadeths.zip 45 ** I Made This by Dune
|
|||
|
/songs/1995/s3m/j/jeesmaan.zip 241 **** Jees Maan Mii Is Avaruus. by Dune
|
|||
|
/songs/1995/s3m/l/lifeforc.zip 81 ***+ Life Force by Cyclone
|
|||
|
/songs/1995/s3m/o/oceanic.zip 323 **** Oceanic by Griffin
|
|||
|
/songs/1995/s3m/r/reoclasc.zip 25 ***+ Reoclassic Mokk by Dune
|
|||
|
/songs/1995/s3m/s/southern.zip 101 ****+ Southern Pacific by Dune
|
|||
|
/songs/1995/s3m/t/teknorap.zip 102 **** Last Train by Dune
|
|||
|
/songs/1995/s3m/t/tension.zip 168 **+ Surface Tension by Cyclone
|
|||
|
/songs/1995/s3m/u/uh-oh.zip 143 *** House Party MCXZorro by Dune
|
|||
|
/songs/1995/s3m/v/victory2.zip 268 ***+ Final Victory by Daedalus
|
|||
|
/songs/1995/s3m/w/waves.zip 74 ** Waves by Cyclone
|
|||
|
/songs/1995/xm/d/d_1-te2.zip 27 * rave1 by dune/orange
|
|||
|
/songs/1995/xm/n/ns.zip 42 *** Study Break by TJ
|
|||
|
/songs/1995/xm/s/shield.zip 508 ***+ Shield of Protection by Lioz
|
|||
|
/songs/1996/it/g/gem-resr.zip 447 *+ Resurrection by Galahad
|
|||
|
/songs/1996/it/i/i-xtinct.zip 103 ** Xtinct FunkJungle by Motiv
|
|||
|
/songs/1996/it/i/inthehal.zip 229 *+ In Hall..Mountain King by Sturm
|
|||
|
/songs/1996/it/j/js-caway.zip 5 *** Chipping Away by Jestyr
|
|||
|
/songs/1996/it/l/lwclouds.zip 125 * Long White Clouds by Sturm
|
|||
|
/songs/1996/it/n/neb-crow.arj 170 ** Crow Supremacy by MikPos
|
|||
|
/songs/1996/it/n/nf-knew.zip 82 *+ Knowing the Answer by NF
|
|||
|
/songs/1996/it/o/orc.zip 213 ** The March of the orcs by Bishop
|
|||
|
/songs/1996/it/w/winddown.zip 516 ***+ Wind Down by Reuben Fortier
|
|||
|
/songs/1996/mod/a/amu.zip 80 **+ AM 1.R SZ by Lala & H.Robi
|
|||
|
/songs/1996/mod/b/batucada.zip 205 ** Batucada by DJ Dero
|
|||
|
/songs/1996/mod/b/beau_day.zip 195 **+ Beautiful Day by Smash
|
|||
|
/songs/1996/mod/c/cyberspc.zip 82 ** CyberSpace by LaLa
|
|||
|
/songs/1996/mod/d/dreamsre.zip 105 ** Dreams of Reality by Soundmaster
|
|||
|
/songs/1996/mod/d/drumrunr.zip 150 *+ Drum Run Remix2 by Tronster
|
|||
|
/songs/1996/mod/d/dungeonw.zip 101 *+ Dungeon Walk by LaLa
|
|||
|
/songs/1996/mod/m/m_adult.lha 392 **+ Adults by Dreamfish
|
|||
|
/songs/1996/mod/m/m_far.lha 263 *** Farawayadventure by Carebear
|
|||
|
/songs/1996/mod/m/m_subi.lha 163 **+ Subi's Back by Subi
|
|||
|
/songs/1996/mod/m/m_trib.lha 237 ***+ Tribute Remix by TheFoxII
|
|||
|
/songs/1996/mod/p/pinochio.zip 79 *** Pinochio by Cortex
|
|||
|
/songs/1996/mod/t/teknodan.zip 78 **+ Tekknodance by SoundMaster
|
|||
|
/songs/1996/mod/t/tinytune.zip 10 **+ TinyTune by SoundMaster
|
|||
|
/songs/1996/mod/y/ybkeep.zip 119 **+ The Keep by Yannis
|
|||
|
/songs/1996/mod/y/ybroam.zip 66 *** Roaming the Ruins by Yannis
|
|||
|
/songs/1996/mtm/k/k_rept.zip 290 **+ Reptillian by Quarex
|
|||
|
/songs/1996/other/k/k_kitexp.zip 403 **+ Kitchen Experiment by Vivid (AMS)
|
|||
|
/songs/1996/other/u/u_consol.zip 46 ** Consolidation by Lala (ULT)
|
|||
|
/songs/1996/other/u/u_crimew.zip 124 ***+ Crimewave by Lala (ULT)
|
|||
|
/songs/1996/other/u/u_illusi.zip 367 **+ Illusions of Love by Lala (ULT)
|
|||
|
/songs/1996/other/u/u_moment.zip 145 ** Moments of Friendship by Lala(ULT)
|
|||
|
/songs/1996/other/u/u_snowfl.zip 511 *** Snowflake Hymn by Lala (ULT)
|
|||
|
/songs/1996/other/u/u_vastne.zip 315 ** The Vastness of Space by Lala(ULT)
|
|||
|
/songs/1996/s3m/a/a_intro.zip 232 *** Introspection by Subliminal
|
|||
|
/songs/1996/s3m/a/a_tback.zip 208 **+ No Turnin' Back by Subliminal
|
|||
|
/songs/1996/s3m/a/a_unlmnd.zip 119 **+ Unlocked Mind by Subliminal
|
|||
|
/songs/1996/s3m/a/aa-tranc.zip 129 *** Trance Dance? by Mindless
|
|||
|
/songs/1996/s3m/a/agony.zip 195 * Agony by Dornbush & Fisher
|
|||
|
/songs/1996/s3m/a/andrea.zip 262 * Andrea by Dornbush & Fisher
|
|||
|
/songs/1996/s3m/a/andreabm.zip 227 * Andrea-BRemix by Dornbush+Fisher
|
|||
|
/songs/1996/s3m/a/andreahh.zip 249 * Andrea HRemix by Dornbush+Fisher
|
|||
|
/songs/1996/s3m/a/angtalk.zip 251 **+ Angel Talk by Intermission
|
|||
|
/songs/1996/s3m/a/another.zip 160 **+ Another Lies by The Revelations
|
|||
|
/songs/1996/s3m/a/ara_seek.zip 55 ** Seek by Ara
|
|||
|
/songs/1996/s3m/a/ashit.zip 107 * AShit by Dornbush & Fisher
|
|||
|
/songs/1996/s3m/b/battle.zip 133 ***+ Fight to the Finish by Nitro
|
|||
|
/songs/1996/s3m/b/blast.zip 533 * Blast..Brains by Dornbush+Fisher
|
|||
|
/songs/1996/s3m/b/bn-aevea.zip 276 ***+ Aevea by DJBeanz
|
|||
|
/songs/1996/s3m/b/bronx.zip 521 ** Rumble in the Bronx by Stein
|
|||
|
/songs/1996/s3m/b/bullet.zip 801 * Bullet with Butter.. by Stein
|
|||
|
/songs/1996/s3m/b/bw-gtagt.zip 125 ***+ Goodbye to a good.. by Blackwolf
|
|||
|
/songs/1996/s3m/c/ccs-caff.zip 250 ** Caffeine by Absalom
|
|||
|
/songs/1996/s3m/c/ccs-dfub.zip 147 *** DasFunky UberAlles by Aahz
|
|||
|
/songs/1996/s3m/c/ccs-enf.zip 193 *** Ebb & Flow by Absalom
|
|||
|
/songs/1996/s3m/c/ccs-eps.zip 330 **** Epsilon Eclipse by Mayhem
|
|||
|
/songs/1996/s3m/c/ccs-insm.zip 499 ***+ The Insomniac by Mayhem
|
|||
|
/songs/1996/s3m/c/ccs-srq.zip 349 ***+ My Satin-Robed Queen by Mayhem
|
|||
|
/songs/1996/s3m/c/ccs-ssre.zip 229 *** Sidestep Remix by Aahz
|
|||
|
/songs/1996/s3m/c/ccs-wud.zip 256 ***+ Wake Up Dead by Aahz
|
|||
|
/songs/1996/s3m/c/cyborgc.zip 173 + Cyborg Cop by uToPiA
|
|||
|
/songs/1996/s3m/d/d_allend.zip 80 + All Good Things... by Noble Roman
|
|||
|
/songs/1996/s3m/d/d_begin.zip 50 * Sad Beginnings by Noble Roman
|
|||
|
/songs/1996/s3m/d/d_dont.zip 73 + Don't Bother Me by Noble Roman
|
|||
|
/songs/1996/s3m/d/d_echoes.zip 162 + Echoes from Within by Noble Roman
|
|||
|
/songs/1996/s3m/d/d_melody.zip 18 + Pianoic Melody by Noble Roman
|
|||
|
/songs/1996/s3m/d/desire07.zip 238 + Desire by Sonzoo
|
|||
|
/songs/1996/s3m/d/dickd1.zip 74 * Tyrone by Dick Ditties
|
|||
|
/songs/1996/s3m/d/dmicnfm.zip 218 **+ Conformity by Stavross
|
|||
|
/songs/1996/s3m/d/dmk-strv.zip 215 ***+ Striving for the Light by Hector
|
|||
|
/songs/1996/s3m/d/ds-darkc.zip 118 *+ Dark, Cold, and Empty by Froyd
|
|||
|
/songs/1996/s3m/d/ds-know.zip 197 ** Don't Know Her by Ez
|
|||
|
/songs/1996/s3m/d/dvision.zip 135 ** Double Vision by Porus
|
|||
|
/songs/1996/s3m/e/envy.zip 95 * Envy by Stein
|
|||
|
/songs/1996/s3m/f/flying.arj 91 **+ Flying in the Sky by Love 4 All
|
|||
|
/songs/1996/s3m/f/for_bles.zip 204 *+ Bless You by Fortune
|
|||
|
/songs/1996/s3m/f/for_itts.zip 167 *+ Into the Shadow by Fortune
|
|||
|
/songs/1996/s3m/f/for_prog.zip 113 *+ Progression by Fortune
|
|||
|
/songs/1996/s3m/g/g_fntn2.zip 185 **+ (fount[)ag(ain]) by Q. Porcupine
|
|||
|
/songs/1996/s3m/g/gem-tree.zip 81 *** Trees by OxideMan
|
|||
|
/songs/1996/s3m/h/hide.zip 225 *+ Hide by Crimeday
|
|||
|
/songs/1996/s3m/j/jacobs_l.zip 256 **** Jacob's Ladder by Ler
|
|||
|
/songs/1996/s3m/j/java.zip 54 **+ Kingdom of Java by Fizz
|
|||
|
/songs/1996/s3m/k/kguns.zip 65 **** Karate Guns PLUS! by Meat
|
|||
|
/songs/1996/s3m/l/lg-oasis.arj 312 *** Oasis by Legend
|
|||
|
/songs/1996/s3m/l/lnc-days.zip 212 **+ These Sunny Days by Linearic
|
|||
|
/songs/1996/s3m/l/lnc-exp.zip 203 **+ Expedition to Unknown by Linearic
|
|||
|
/songs/1996/s3m/l/lnc-jmca.zip 91 ** I Come From Jamaica by Linearic
|
|||
|
/songs/1996/s3m/l/lnc-rock.zip 146 **+ Rockers Will Survive by Linearic
|
|||
|
/songs/1996/s3m/l/lost.zip 139 ***+ Lost in a Cloud by Cardiac
|
|||
|
/songs/1996/s3m/m/masked.zip 149 ** Masked message by Juggernaut
|
|||
|
/songs/1996/s3m/m/mess.zip 118 **+ Total Mess by Juggernaut
|
|||
|
/songs/1996/s3m/m/miracle.zip 97 ** The Miracle (Queen) by Zaigamor Spellweaver
|
|||
|
/songs/1996/s3m/n/nex-cact.zip 377 **+ Plastic Cactus by Nexus
|
|||
|
/songs/1996/s3m/n/nm-life.zip 222 *** Portrait of Life by Nomex
|
|||
|
/songs/1996/s3m/n/noreturn.zip 103 ** There..no return... by Juggernaut
|
|||
|
/songs/1996/s3m/o/outsider.zip 331 *** Outsider by Juggernaut
|
|||
|
/songs/1996/s3m/o/oym-trf.zip 298 *+ Turbulent Rhythm Flow by Oyml A.
|
|||
|
/songs/1996/s3m/o/oym-ttds.zip 110 ** Trippy Trippy Disco.. by Oyml A.
|
|||
|
/songs/1996/s3m/p/pal_chem.zip 94 ** Chemistry of Hate by Paladin
|
|||
|
/songs/1996/s3m/p/pal_wth.zip 158 *+ Welcome to Hell by Paladin
|
|||
|
/songs/1996/s3m/p/peaceful.zip 68 *** Peaceful Journey 1.01 by Cyclone
|
|||
|
/songs/1996/s3m/s/s-time.zip 184 *** Time Slips By by Gamera
|
|||
|
/songs/1996/s3m/s/s_slides.zip 151 **+ Slides by Shudder
|
|||
|
/songs/1996/s3m/s/slenter.zip 238 + Slenterpunk by Dornbush and Fisher
|
|||
|
/songs/1996/s3m/s/smi_brmx.arj 164 * Boom Ring Mix by Joker
|
|||
|
/songs/1996/s3m/s/smi_crn.arj 48 ** Cryin' (cover) by Joker
|
|||
|
/songs/1996/s3m/s/smi_dcmp.arj 317 * Dance Computer by Joker
|
|||
|
/songs/1996/s3m/s/sr_progr.zip 247 ** Progression by S.Roger
|
|||
|
/songs/1996/s3m/s/sum-song.arj 119 **+ Summer Song by Fox
|
|||
|
/songs/1996/s3m/t/tl-affli.zip 569 ***+ Affliction by Timelord
|
|||
|
/songs/1996/s3m/t/tp5_dune.zip 389 ****+ World of Saracens by Dune
|
|||
|
/songs/1996/s3m/w/wake.zip 186 ** Wake by Bishop
|
|||
|
/songs/1996/s3m/x/x-files.zip 276 ***+ The X-files by Daedalus
|
|||
|
/songs/1996/s3m/x/x96revol.zip 126 *** Revolution 2 by Maxtracker
|
|||
|
/songs/1996/s3m/z/zeolite2.arj 149 **+ Zeolite Mix 2 by Utopia+Crimeday
|
|||
|
/songs/1996/s3m/z/zn-1day.zip 141 **+ One day... by zinc
|
|||
|
/songs/1996/xm/0-9/3xd578k9.zip 17 ***+ Gateway 20k Compo Songs by Dune
|
|||
|
/songs/1996/xm/0-9/97-cross.zip 580 **+ Getting the Hang by Celorn K.
|
|||
|
/songs/1996/xm/a/air-rt.zip 471 *** Runtime by Airon
|
|||
|
/songs/1996/xm/a/apsbrain.zip 131 *** Brainchild by APS
|
|||
|
/songs/1996/xm/a/asg.zip 605 * All System Go! by Eeli
|
|||
|
/songs/1996/xm/b/baddream.zip 104 + ...Bad Dream by Dr. Westwood
|
|||
|
/songs/1996/xm/b/ballad.zip 440 ***+ The Ballad of Romeo by doj/ct
|
|||
|
/songs/1996/xm/b/beautif3.zip 1536 ** Beautiful life by K.O Xtrong
|
|||
|
/songs/1996/xm/b/bodyheat.zip 148 ** Feel my Bodyheat by Igneous
|
|||
|
/songs/1996/xm/b/boriqua.zip 737 ** RR Boriqua Anthem by K.O. Xtrong
|
|||
|
/songs/1996/xm/c/cb-bubbl.arj 397 ** Whatever Bubbles by PeDRo
|
|||
|
/songs/1996/xm/c/cb-draft.arj 193 ** Draft by Logos
|
|||
|
/songs/1996/xm/c/cb-shake.arj 146 *+ Something to Shake by TruxX
|
|||
|
/songs/1996/xm/c/cbk_brxb.zip 466 *+ Breax > Beats by Cubik
|
|||
|
/songs/1996/xm/c/cbk_sday.zip 228 ** I Don't Like Sundays by Cubik
|
|||
|
/songs/1996/xm/c/cbk_svu1.zip 51 *+ Sellout vs. Underground by Cubik
|
|||
|
/songs/1996/xm/c/cc-rmwng.zip 87 **+ Raising My Wings by Cruel Creator
|
|||
|
/songs/1996/xm/c/ccs-time.zip 625 **** Give Me Some Time by Aahz/Absalom
|
|||
|
/songs/1996/xm/c/cemetery.zip 473 **+ Cemetary by Embrittlement
|
|||
|
/songs/1996/xm/c/consolid.zip 39 *+ Consolidation by LaLa
|
|||
|
/songs/1996/xm/d/dahouse.zip 349 + Rock Da House by Eye of Hurricane
|
|||
|
/songs/1996/xm/e/e_asg.zip 605 * All Systems Go by Eeli
|
|||
|
/songs/1996/xm/e/el-bp_ae.zip 308 **+ Bluefire Pop by Electric Lucidity
|
|||
|
/songs/1996/xm/e/el-esotr.zip 255 **+ Esoteric by Electric Lucidity
|
|||
|
/songs/1996/xm/e/el-thu.zip 442 **+ The Half Unknown by Electric Lucidity
|
|||
|
/songs/1996/xm/e/elw-dead.zip 257 **** Deadlock by Elwood
|
|||
|
/songs/1996/xm/e/elw-fall.zip 321 **** Fall from Sky by Elwood
|
|||
|
/songs/1996/xm/e/elw-feat.zip 378 **** Feats of Valor by Elwood
|
|||
|
/songs/1996/xm/e/elw-icom.zip 230 **** Inferiority Complex by Elwood
|
|||
|
/songs/1996/xm/e/elw-litt.zip 283 ****+ Little Man by Elwood
|
|||
|
/songs/1996/xm/e/elw-shad.zip 232 **** Into the Shadow by Elwood
|
|||
|
/songs/1996/xm/e/elw-shot.zip 212 **** Shooting Star by Elwood
|
|||
|
/songs/1996/xm/e/elw-swee.zip 320 ****+ Sweet Dreams by Elwood
|
|||
|
/songs/1996/xm/e/es_wuf.zip 106 * Wolf Waltz by Estinor
|
|||
|
/songs/1996/xm/e/evacuate.lzh 146 **+ Evacuate! by BMP
|
|||
|
/songs/1996/xm/e/evoldork.zip 930 **+ Evol Dork by The Green Reaper
|
|||
|
/songs/1996/xm/f/fantoz96.zip 182 **+ Fantozi Original by BassQ
|
|||
|
/songs/1996/xm/f/fh-nrefl.zip 214 ** Nostalgic Reflection by FH
|
|||
|
/songs/1996/xm/f/fsk_5min.zip 73 *** 5 Minutes of Morning by VadimVS
|
|||
|
/songs/1996/xm/g/g_darkp.zip 300 ***+ Dark Promise by Hunz
|
|||
|
/songs/1996/xm/g/g_sonido.zip 453 * Sonido Matanzero by Ryan
|
|||
|
/songs/1996/xm/g/gentle.zip 283 ** Be Gentle With Me by Peter Kendell
|
|||
|
/songs/1996/xm/g/gustoso.zip 95 *+ Gustoso by Pix
|
|||
|
/songs/1996/xm/i/it-start.zip 52 **+ Startrekkin Forever by It-Alien...
|
|||
|
/songs/1996/xm/j/jb-21stc.zip 552 **** 21st Century Dig.. by J. Bonnell
|
|||
|
/songs/1996/xm/j/jb-bunkr.zip 252 ***+ The Bunker by John Bonnell
|
|||
|
/songs/1996/xm/j/jb-uncle.zip 511 *** Uncle John by John Bonnell
|
|||
|
/songs/1996/xm/j/jr-htheb.zip 374 **+ Huggy the Buggy by J.Rook
|
|||
|
/songs/1996/xm/k/k_frothy.zip 264 ***+ Frothy Moo Jooce by Lord Pegasus
|
|||
|
/songs/1996/xm/k/kb.zip 448 + Klondike Bar by Joe & Steve & Bob
|
|||
|
/songs/1996/xm/k/koti_01.zip 285 *** Breakin' Thru by Kotivalo
|
|||
|
/songs/1996/xm/k/koti_02.zip 345 **** Hypnosis by Kotivalo
|
|||
|
/songs/1996/xm/k/koti_03.zip 301 *** When Twilight Comes by Kotivalo
|
|||
|
/songs/1996/xm/k/koti_04.zip 153 **** Walking by Kotivalo
|
|||
|
/songs/1996/xm/l/levi.zip 341 *** Powers of Levitation by Rascal
|
|||
|
/songs/1996/xm/m/mo-mania.zip 540 ** Movie Mania by Igneous
|
|||
|
/songs/1996/xm/n/n55-dawn.zip 372 ***+ Dawn by Xerxes
|
|||
|
/songs/1996/xm/n/na_fate.zip 389 ***+ Fate by Gain
|
|||
|
/songs/1996/xm/n/ng-freon.zip 81 ** Freone (oZone edit) by Demuc
|
|||
|
/songs/1996/xm/n/ng-sl.zip 335 **+ Skyline (remix) by Solaris
|
|||
|
/songs/1996/xm/n/no-hope.zip 170 ***+ Hope by Syrinx
|
|||
|
/songs/1996/xm/o/o-paci.zip 301 **+ Pacific Ocean by Oona
|
|||
|
/songs/1996/xm/o/o-re_hsi.zip 232 *** Intelligent reload by Oona
|
|||
|
/songs/1996/xm/o/o_dbbrn.zip 373 **+ More db's than brains by Otis
|
|||
|
/songs/1996/xm/o/o_phong.zip 459 **+ Trancehaded trip by Otis
|
|||
|
/songs/1996/xm/o/o_trip2.zip 380 **+ The Trip part II by Otis
|
|||
|
/songs/1996/xm/p/pahdistb.zip 299 ** Disturbance by PAH
|
|||
|
/songs/1996/xm/p/para-vox.zip 648 **** Paranoia (voice mix) by Scirocco
|
|||
|
/songs/1996/xm/p/paranoid.zip 297 *+ Paranoid by Green Reaper
|
|||
|
/songs/1996/xm/p/pb_dance.zip 193 **+ Keep Dancin by Point Blank
|
|||
|
/songs/1996/xm/p/pb_roll.zip 367 *** Destiny Roll by Point Blank
|
|||
|
/songs/1996/xm/p/pmb-soun.zip 192 ** Sound of S.A by Snes
|
|||
|
/songs/1996/xm/r/r_leap.zip 159 *+ Leapfrog by Ryan
|
|||
|
/songs/1996/xm/r/r_true.zip 262 * True Remorse by Ryan
|
|||
|
/songs/1996/xm/r/r_vict.zip 182 * Victory by Ryan
|
|||
|
/songs/1996/xm/r/riversid.arj 365 *** Riverside Ballad by Soundmaster
|
|||
|
/songs/1996/xm/r/ru-4ever.zip 267 ** Dream 4ever by DJ Rex
|
|||
|
/songs/1996/xm/r/russia.zip 35 *+ Russian Feel by Sleepwalker
|
|||
|
/songs/1996/xm/s/sc_impac.zip 155 ***+ Impact by Screamager
|
|||
|
/songs/1996/xm/s/sensatio.zip 249 *** Sensations by Soundmaster
|
|||
|
/songs/1996/xm/s/si-mroc1.zip 195 ** Modern Rock 1 by J. Bonnell
|
|||
|
/songs/1996/xm/s/sky_ilde.zip 214 **+ Illogical Decision by D.J. YoYo
|
|||
|
/songs/1996/xm/s/sky_inds.zip 513 **+ Industry of Noise by D.J. YoYo
|
|||
|
/songs/1996/xm/s/sky_only.zip 192 ** Only You by D.J. YoYo
|
|||
|
/songs/1996/xm/s/sky_open.zip 314 ** Open Your Mind by D.J. YoYo
|
|||
|
/songs/1996/xm/s/sky_rain.zip 282 **+ Raindrops by D.J. YoYo
|
|||
|
/songs/1996/xm/s/soda-ste.zip 92 **+ De Musica Ligera by Nadim Hobaica
|
|||
|
/songs/1996/xm/s/spazm.zip 234 **+ Spazmodic..Vengeance by G. Reaper
|
|||
|
/songs/1996/xm/s/stabbing.zip 184 * Backstabbing by Bombi D
|
|||
|
/songs/1996/xm/s/symph.zip 114 ** Symphony in Her Mind by Saxy
|
|||
|
/songs/1996/xm/t/tejin.zip 67 *+ TJ Intro Tune by Sleepwalker
|
|||
|
/songs/1996/xm/t/thebegin.zip 268 **+ The Beginning by Humanoid
|
|||
|
/songs/1996/xm/t/tom-divn.zip 450 *** Divna by Mateus
|
|||
|
/songs/1996/xm/t/tom-poho.zip 301 ***+ Czech Pahoda 96 by Mateus
|
|||
|
/songs/1996/xm/t/tricky.zip 246 **** Tricky by Balrog & Mellow-D
|
|||
|
/songs/1996/xm/w/w-snowin.zip 213 **** Snowin' At Sahara by Weed
|
|||
|
/songs/1996/xm/w/wasser.zip 393 ***+ Wenn das Wasser blubbert by DOJ
|
|||
|
/songs/1996/xm/x/xs1.zip 844 * Excessive Force by Utopian Dreamer
|
|||
|
/songs/1996/xm/x/xs2.zip 1120 + Excessive Trance by Utop.. Dreamer
|
|||
|
/songs/1996/xm/x/xs3.zip 1038 * ??? by Utopian Dreamer
|
|||
|
|
|||
|
=------------------------------------------------------------------(Graphics)-=
|
|||
|
/demos/graphics Size Rated Description
|
|||
|
=----------------------------- ---- ----- ------------------------------------=
|
|||
|
/images/1995/g/gfx_ddt.zip 276 **+ ENL95:grfx:02: Robots by Royal Ghost
|
|||
|
/images/1995/g/gfx_lkr.zip 129 ** ENL95:grfx:XX: Check eyes by Hired
|
|||
|
/images/1995/g/gfx_ovr.zip 90 ** ENL95:grfx:XX: Prince by Battle
|
|||
|
| Master
|
|||
|
/images/1995/g/gfx_qmg.zip 393 **+ ENL95:grfx:03: Ships by Queue Members
|
|||
|
| Group
|
|||
|
/images/1995/g/gfx_ren.zip 108 ***+ ENL95:grfx:01: Rave Babe by Ren of
|
|||
|
| Scene Side
|
|||
|
/images/1996/e/elements.arj 615 *+ Elements by MikPos
|
|||
|
/images/1996/l/lt-jezth.zip 46 ** Jezeth by Light
|
|||
|
/images/1996/l/lt-ltm.zip 134 ** Little Mistake by Light of Kosmic
|
|||
|
/images/1996/l/lt-pfear.zip 157 *** Planetary Fear by Light
|
|||
|
/people/h/hqn.gif 5 Harlequin / Success
|
|||
|
/programs/editors/apaint01.arj 20 AnimPaint animation editor by Sphair
|
|||
|
/programs/editors/bsdemo1a.zip 75 Blob Sculptor for 3ds by Steve Anger
|
|||
|
|
|||
|
|
|||
|
==[Articles]===================================================================
|
|||
|
|
|||
|
=---------------------------------------------------(Introduction)--(Snowman)-=
|
|||
|
|
|||
|
Hello all, and welcome to DemoNews issue 123.
|
|||
|
|
|||
|
Much has happened in the past three weeks. Diablo and I set down some
|
|||
|
concrete specifications on the new archive system. The Hornet Underground CD
|
|||
|
went off to the happy mass-producers. The beta version of the Music Contest
|
|||
|
4 rules were released to the public. A baby web interface was constructed on
|
|||
|
our archive. A week was spent in contract negotiations with the NAID
|
|||
|
organizers (concerning Walnut Creek's sponsorship and the NAID CD). At the
|
|||
|
company, I got "promoted" to webmaster (maybe I should call it a lateral
|
|||
|
move).
|
|||
|
|
|||
|
Trixter works on our demo for NAID while GD tries to coordinate efforts on
|
|||
|
the MC4 intro. I try to review demos while brushing up on HTML 3.2
|
|||
|
documentation. The RealAudio people keep calling me and asking if I like
|
|||
|
their FreeBSD .ra server. Yes folks, it is that time of the year, the season
|
|||
|
for excess stress and super-human productivity... Whew!
|
|||
|
|
|||
|
This world is a funny place sometimes. Every time I think my role is set in
|
|||
|
the scene, it changes. Every time I think I've established permanence in
|
|||
|
something I soon find flaws or ways to enhance it. Every time I think about
|
|||
|
thinking, I get caught in this endless while(1) loop until someone breaks me.
|
|||
|
|
|||
|
Stress is an incredible catalyst in creative expression. It can make you
|
|||
|
have wild, colorful, random, and in rare circumstances, logical thoughts.
|
|||
|
Lately, I've caught myself thinking about (plotting? :)) the future of the
|
|||
|
scene. It seemed a worthy subject and all, given that I've got to come up
|
|||
|
with something interesting for this intro.
|
|||
|
|
|||
|
Now suspend for a moment (if you will) concrete and linear thinking. Take
|
|||
|
off those shoes and go smoke if need be. Get relaxed and fresh... this is
|
|||
|
gonna be deep.
|
|||
|
|
|||
|
Think of the demo scene as this big crystalline gem, floating in space.
|
|||
|
Everyone's a light source, floating around weightless. Some of us find other
|
|||
|
colors complementary to ourselves. We stick together and fly in ordered
|
|||
|
patterns. For one reason or another, certain faces of this gem get more
|
|||
|
light than others. Some colors apparently prefer to master a darker side of
|
|||
|
the crystal rather than compete in a fray of luminescence.
|
|||
|
|
|||
|
Over time, new lights trickle in from afar. The gem gets brighter.
|
|||
|
Eventually so many lights cluster around the gem that you can't see it
|
|||
|
anymore... it's too bright to look at. But the old lights keep circling,
|
|||
|
having memorized where they need to be. In the surrounding space, foreign
|
|||
|
colors start to be drawn toward the inferno... not even able to see the gem
|
|||
|
inside but driven by curiosity. 'Why is that thing so bright?'
|
|||
|
|
|||
|
It's time for an eclipse.
|
|||
|
|
|||
|
Snowman / Hornet - r3cgm@cdrom.com
|
|||
|
|
|||
|
|
|||
|
=---------------------------------------------(Announcing NAID 1996)--(Struk)-=
|
|||
|
|
|||
|
_____Introduction
|
|||
|
|
|||
|
Big happy hello to everyone in the demo scene! This year, me (Struk), Mr.
|
|||
|
Khan and MEd are putting together the second edition of the North American
|
|||
|
International Demofest.
|
|||
|
|
|||
|
NAiD '96 will be 3 days long, starting on 31 May 1996 at College
|
|||
|
Edouard-Montpetit in Longeuil (Quebec) Canada. Doors open at 20h00 on
|
|||
|
Friday, 31 May 1996. With the help of our sponsors, especially Walnut Creek
|
|||
|
CDROM (You might know them thru their mega ftp site ftp.cdrom.com) we will be
|
|||
|
able to give away over $8000 CAN in prizes for all the compos. There will be
|
|||
|
a Demo, Intro, Music, Gfx, 4.2 kb Intro, 3Channel chiptune, The Lim-o-naid
|
|||
|
and a couple of other very kewl competitions on site.
|
|||
|
|
|||
|
For the past 8 months we have been working very hard to get this party
|
|||
|
together. A lot of activities and features are in the works that will make
|
|||
|
NAiD 1996 a much bigger and much better demoparty than its previous
|
|||
|
incarnation. To give you a few examples, we are planning to rent LASERS for
|
|||
|
extremely impressive mind-bogling-baba-cool music and light shows. We're
|
|||
|
planning to get a big Molson beer tent accompanied by a good sound-system and
|
|||
|
a BBQ outside (A great way to get your vitamin E :). We'll be renting 35mm
|
|||
|
movies (like Pulp Fiction) to watch them in our school movie theater with
|
|||
|
surround sound. We'll be getting an ISDN data line for Internet access.
|
|||
|
We'll have cool prizes to all the small compos, some cool bands playing, and
|
|||
|
a lot, lot more. Of course, all of this kinda costs money.
|
|||
|
|
|||
|
At last year's party, as you might know, we ended up with a small deficit
|
|||
|
(which was to be expected considering we almost gave tickets away). The
|
|||
|
situation this year is quite different since we are now aiming for 0 deficit,
|
|||
|
maximum fun.
|
|||
|
|
|||
|
Now, on a seemingly unrelated issue, we also are planning to get our college
|
|||
|
diplomas in the not too distant future. Now, having said this, we'd like to
|
|||
|
ask people to mail in (or fax) their ticket orders for NAiD 1996 as soon as
|
|||
|
possible. This gives us a bit more room to maneuver than we had last year.
|
|||
|
It's not that the NAiD party is at risk, but the health and grades (I mean
|
|||
|
it) of everybody involved in the organization will suffer if we have to go
|
|||
|
through the same amount of red tape we had to last time. And that can't be
|
|||
|
good for the party either.
|
|||
|
|
|||
|
Thus, help us and make our jobs easier. Send us thru mail or fax your ticket
|
|||
|
orders for NAiD as soon as possible. That way we'll have the breathing space
|
|||
|
we need to make NAiD 1996 the biggest and the best it can be. Don't forget,
|
|||
|
NAiD is a non-profit demo party! All the money that comes in goes directly
|
|||
|
back into da party! So don't be shy and order now! We wanna know how many
|
|||
|
people will be having fun on earth this year! :)
|
|||
|
|
|||
|
NAiD - Be there and die or be elsewhere and cry.
|
|||
|
|
|||
|
Struk / NAID-Apraxia - naid@autoroute.net, http://www.autoroute.net/~naid
|
|||
|
|
|||
|
|
|||
|
=------------------------------(A Graphician's Tip Book - Part 1)--(Shaithis)-=
|
|||
|
|
|||
|
_____Introduction
|
|||
|
|
|||
|
For those of you who don't know me (which should be just about everyone on
|
|||
|
the PC demo scene), my name's Chris Buecheler (Beekler)... or Shaithis...
|
|||
|
whatever. I'm an artist and a tracker, although my skills at the former are
|
|||
|
much more, shall we say, refined than the latter.
|
|||
|
|
|||
|
Anyway, I contacted Snowman recently, and questioned him on whether he liked
|
|||
|
the idea of a graphics column. His response was very positive. Go for it.
|
|||
|
Write the column. Okay, So here I am...
|
|||
|
|
|||
|
I'm here to give you guys, the slavering demosceners, some information on
|
|||
|
graphics, both for demos and for still viewing. I know nothing about code,
|
|||
|
so don't ask. I can probably tell you a bit about tracking, but you'd be
|
|||
|
better off asking Necros or somebody. I'm going to start this column with
|
|||
|
the true basics, so anyone who has been doing graphics for awhile, disregard.
|
|||
|
|
|||
|
_____Graphics
|
|||
|
|
|||
|
Graphics are the pretty pictures that you see on your screen when you use
|
|||
|
your computer for anything. These graphics are made up of pixels, dots of
|
|||
|
various colors lined up in any certain order. When you create a work of art
|
|||
|
with these pixels, you have made the exact thing that this column is
|
|||
|
dedicated to.
|
|||
|
|
|||
|
_____Resolution
|
|||
|
|
|||
|
Resolution is how many pixels your monitor is displaying or can display on
|
|||
|
the screen at any one time. Anyone with a monitor can display some amount of
|
|||
|
pixels. (If you don't have a monitor, you can't read this, and you got
|
|||
|
suckered at your local computer shop). Anyway, most monitors can handle at
|
|||
|
least VGA (displaying up to a maximum resolution of 640x480 pixels at a time,
|
|||
|
horizontal by vertical). Color depth is also a part of monitors, but we'll
|
|||
|
mention that in the color section.
|
|||
|
|
|||
|
NOTE: Your resolution and colors also depend on your graphics card, but
|
|||
|
that's more technical than I feel like going into. ;)
|
|||
|
|
|||
|
_____Color
|
|||
|
|
|||
|
Color is (as I learned in Light Color and Design class), determined by three
|
|||
|
factors: Hue, Saturation, and Intensity. Hue is more or less what people are
|
|||
|
asking about when they say "What color is this?" Saturation is how true the
|
|||
|
color is, or more specifically, how far away from grey the color is.
|
|||
|
Intensity is how "bright" the color is. For example, fire-engine red is high
|
|||
|
in both intensity in saturation. Blood red is high in saturation, but not as
|
|||
|
high in intensity. Pale pink is not terribly high in either, and so on...
|
|||
|
|
|||
|
Color depth is simply what and how many colors your monitor can display at
|
|||
|
any one time. At first monitors were monochrome, or single color. Then came
|
|||
|
CGA, or 320x200 resolution with 4 colors. EGA, 320x200x16 colors. VGA,
|
|||
|
640x480x16. MCGA (which people usually call VGA) 640x480x256. SVGA,
|
|||
|
1024x768x256, and EVGA (Which people usually call SVGA) 1024+x768+x256+, up
|
|||
|
to a possible 16.7 million colors.
|
|||
|
|
|||
|
_____Art
|
|||
|
|
|||
|
Ah. Here we have the MAJOR debate in the graphics scene. What is art? Must
|
|||
|
every pixel be hand drawn, or do rendering techniques qualify? If you
|
|||
|
believe the former, you probably won't agree with me on everything I have to
|
|||
|
say. That's cool. Email me. I believe that an artist should be allowed to
|
|||
|
use ANY tools available to him. What one creates with an airbrush is no less
|
|||
|
art than what one creates with a paintbrush, so why is Deluxepaint an art
|
|||
|
program, but Photoshop not?
|
|||
|
|
|||
|
Sure, if all you're doing is creating a boring texture, and then putting a
|
|||
|
plain white font over it that says "Demos Rock, Baby!", then you have a
|
|||
|
problem. I think it is the artist, however, more than the tools, that
|
|||
|
defines "art".
|
|||
|
|
|||
|
This pretty much brings my first installment to an end. I'm not going to go
|
|||
|
into any tips and tricks this time around, or the column will be far too
|
|||
|
long. However, let me give you a brief synopsis of the next few articles:
|
|||
|
|
|||
|
Articles Topic
|
|||
|
-------- -----------------------------------------
|
|||
|
2 - 4 Deluxepaint II Enhanced (an introduction)
|
|||
|
5 - 7 Adobe Photoshop (an introduction)
|
|||
|
8 - ? Tips & Trix (will cover lots of software)
|
|||
|
|
|||
|
I'm certain there will be more. After all, I discover new tricks on an
|
|||
|
everyday basis. Therefore I'll stop writing now and leave you anticipating
|
|||
|
my next column (I hope). If you have any tips/tricks/etc. for any art
|
|||
|
programs, don't hold back sending them to me. I can assure you that all tips
|
|||
|
WILL be credited to their rightful discoverers. Until next time, I remain:
|
|||
|
|
|||
|
Shaithis / WiCKED, Immortal Coil - shaithis@dreamscape.com
|
|||
|
|
|||
|
|
|||
|
=-------------------------------(Intro to 3D Graphics - Volume 05)--(Kiwidog)-=
|
|||
|
|
|||
|
_____Introduction
|
|||
|
|
|||
|
Many happy returns! :-)
|
|||
|
|
|||
|
I know I said I wasn't going to write any more of the 3D series until after
|
|||
|
NAID, but I found that I had some time today to write this article before
|
|||
|
then, so today we'll be discussing
|
|||
|
|
|||
|
The Joy of BSP Trees! :-D
|
|||
|
|
|||
|
Oh, and before I begin, for those of you who've been looking for the article
|
|||
|
3&4 source code and haven't found it, you're not alone... I haven't had the
|
|||
|
time to write up the source for all 3 compilers (WC, BC, and TP) and don't
|
|||
|
think I'll have that much time until NAID. The articles are quicker to write
|
|||
|
than the source, and when I write the source, my primary language/compiler is
|
|||
|
Watcom C. I generally write the Turbo Pascal version last, and since I know
|
|||
|
many of you are Pascal coders, the C version wouldn't do you much good. So
|
|||
|
unless somebody for some reason wants to offer to help convert the 32-bit
|
|||
|
C/Asm into 16-bit TP/Asm, I'm gonna be a little slow on that source. Sorry
|
|||
|
about that; so much work these days...
|
|||
|
|
|||
|
But don't worry, just be patient, the stuff will be there eventually. :-)
|
|||
|
|
|||
|
Anyway, a couple quick notes from back in article 4...
|
|||
|
|
|||
|
_____Typos Etc. (Article 4)
|
|||
|
|
|||
|
In article 4, at one point in explaining a way to do the left-right scanline
|
|||
|
filling, there was the following code block...
|
|||
|
|
|||
|
mov edi, leftoffset
|
|||
|
mov ecx, rightoffset
|
|||
|
sub ecx, edi
|
|||
|
mov ebx, ecx
|
|||
|
shr ecx, 2
|
|||
|
mov eax, color ; assuming color is already prepared to be in all 4 bytes.
|
|||
|
cld
|
|||
|
rep stosd
|
|||
|
mov ecx, ebx
|
|||
|
and ecx, 3
|
|||
|
rep stosd
|
|||
|
|
|||
|
The last line (the second "rep stosd") should be "rep stosb" instead. Sorry
|
|||
|
about that; I meant to say stosb, but for some reason looking 3 lines above
|
|||
|
that just influenced my typing. All apologies, although I'm sure many of you
|
|||
|
figured it out (and many thanks to the 3 or 4 of you who emailed me notifying
|
|||
|
me of this error; I really appreciate it. Please make me aware of any future
|
|||
|
bugs like this; I know I won't catch many of them :)
|
|||
|
|
|||
|
Also, a couple of you have mailed me about the lack of efficiency in the edge
|
|||
|
tracing algo I mentioned, mostly regarding the "check against the left and
|
|||
|
right edges each line to see if they're new extremes" part. Please remember
|
|||
|
that in these articles, I'm covering very very general explanations of
|
|||
|
routines; this is _intro_ to 3D here. :) There are many faster of ways of
|
|||
|
doing just about everything I put in here, so don't take the contents as the
|
|||
|
final word, they're just methods. And for you beginners, remember that
|
|||
|
too... I'm not giving you the fastest routines around... you can always
|
|||
|
optimize! :-)
|
|||
|
|
|||
|
(Hint - for the edge tracer, if you order your points in a certain way,
|
|||
|
either clockwise or counterclockwise, and then check the locations of each
|
|||
|
point before a trace, you can automatically determine which edge it will
|
|||
|
trace over, and can quickly overwrite the values along that edge without any
|
|||
|
comparisons...)
|
|||
|
|
|||
|
Oh BTW, for those interested in the fixed point square root routine I
|
|||
|
mentioned last time, the article explaining that will be in the Coding Corner
|
|||
|
of Imphobia 12, coming out sometime in the next month. So keep an eye out
|
|||
|
for that if you're interested.
|
|||
|
|
|||
|
Okay, enough preface junk, time for the meat of the article! :-D
|
|||
|
|
|||
|
_____What's a BSP Tree Anyway?
|
|||
|
|
|||
|
Okay, if you've played Doom extensively or even just read random articles on
|
|||
|
3D, you probably have heard BSP trees mentioned off and on. But what are
|
|||
|
they, and how can you use them? That's what we're gonna find out today.
|
|||
|
|
|||
|
BSP tree is short for "Binary Space Partitioning" tree. What it is, is a
|
|||
|
tree of line or polygon "nodes" (for 2D or 3D, respectively) that's
|
|||
|
pregenerated before run-time for a given static object or set of objects.
|
|||
|
Once you calculate this tree once for the object(s), you can use it in your
|
|||
|
program each frame to draw the polygons in correct order _regardless_ of your
|
|||
|
view position, just by "walking" the tree in a certain way.
|
|||
|
|
|||
|
I'll be covering both how to build a tree, and how to walk it during your
|
|||
|
program. The walking part is very easy to code, and is quite a fast way of
|
|||
|
drawing surfaces in the right order. The tree generation part is not so
|
|||
|
easy, though, for several reasons which I'll get to shortly.
|
|||
|
|
|||
|
Nonetheless, BSP trees are well worth the trouble if your scenes are pretty
|
|||
|
static... they are quite quick and very effective. :)
|
|||
|
|
|||
|
_____What do you mean by "static" anyway?
|
|||
|
|
|||
|
By "static" object I mean an object (or set of objects) that doesn't move
|
|||
|
with respect to itself. Like, take a standard cube. The cube is a static
|
|||
|
object... you can move the whole cube around the environment, translate it,
|
|||
|
rotate it, etc. But regardless of where it is, it's still a cube. But if
|
|||
|
you take a few of the vertices of the cube and move them around, the parts of
|
|||
|
the cube (i.e. the 6 faces) are no longer the same... hence, if you have an
|
|||
|
object and the object is always that object, it's static. But if you morph
|
|||
|
the object or explode it or something, it's not. Scaling is okay, as long as
|
|||
|
all the vertices are scaled the same (it's still a cube, only a different
|
|||
|
size). It's when the _shape_ changes that causes problems. You'll see why.
|
|||
|
|
|||
|
(Note: There are some cases where you can change face positions in an object
|
|||
|
and still have the tree be valid, you just have to be very careful how your
|
|||
|
tree is constructed if you wish to try something like this).
|
|||
|
|
|||
|
Well, now that we know our limitations, let's build a tree! :-)
|
|||
|
|
|||
|
_____So How Do We Build These Trees?
|
|||
|
|
|||
|
The term "Binary Space Partitioning" is exactly what it seems to be. BSP
|
|||
|
trees, in essence, "cut" space into two equal halves, over and over again,
|
|||
|
until effectively nothing is left to work with. The space is cut along the
|
|||
|
polygons of your object (although some prefer to cut with axis-aligned planes
|
|||
|
instead, which is a bit faster but has flaws of its own). The best way to
|
|||
|
demonstrate this is to walk through a sample tree building of a small scene.
|
|||
|
|
|||
|
We'll work in 2D for this little sample, but the principle carries over into
|
|||
|
3D the same way. Let's say we have a static scene (when I say scene I mean
|
|||
|
one big object, effectively... or in Doom's case, the level map) that we want
|
|||
|
to build a tree for. Our scene is composed of 5 lines, arranged in a
|
|||
|
somewhat random order...
|
|||
|
|
|||
|
/
|
|||
|
/ ------
|
|||
|
/
|
|||
|
|
|||
|
|
|
|||
|
----- | \
|
|||
|
| \
|
|||
|
\
|
|||
|
|
|||
|
(Note: I hope that formatting errors don't happen this time, because if those
|
|||
|
lines aren't in the right places, this will make _no_ sense. :-)
|
|||
|
|
|||
|
Anyway, let's label each of these lines (which we'll pretend are top views of
|
|||
|
3D polygons, like walls)...
|
|||
|
|
|||
|
/
|
|||
|
/A ------
|
|||
|
/ B
|
|||
|
|
|||
|
E<><45><EFBFBD> |
|
|||
|
----- D| \
|
|||
|
| \C
|
|||
|
\
|
|||
|
|
|||
|
We also need to give each line a "positive" side, and a "negative" side. For
|
|||
|
this, pretend that the positive side of each line is the side where the
|
|||
|
letter is on.
|
|||
|
|
|||
|
Now, like the name suggests, we need to cut space in half along some line (or
|
|||
|
axis aligned plane, but I'm not going to get into that method). In essence we
|
|||
|
can just pick a line at random, but as you'll see soon, that's not a good
|
|||
|
idea completely...
|
|||
|
|
|||
|
Say we pick line C. It's facing diagonally, with the upper right on its
|
|||
|
positive side and the lower left on its negative side. Now what we do is, we
|
|||
|
extend this line segment to its full line length, cutting space in half.
|
|||
|
|
|||
|
/ \
|
|||
|
/A \ ------
|
|||
|
/ \ B
|
|||
|
\
|
|||
|
E<><45><EFBFBD> | \
|
|||
|
----- D| \
|
|||
|
| \C
|
|||
|
\
|
|||
|
\
|
|||
|
\
|
|||
|
\
|
|||
|
|
|||
|
Looking at the result, we've got A, E, and D on the negative side, and B on
|
|||
|
the positive side. This was the first step in our tree generation. Let's
|
|||
|
start our tree with the "home" node (the first one we picked)...
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
C
|
|||
|
/ \
|
|||
|
|
|||
|
A BSP tree itself is set up with nodes that have one parent (node above it)
|
|||
|
and between 0 and 2 children (up to one positive and one negative). We chose
|
|||
|
line C as our first "node" to split with, so we put it at the top. The - and
|
|||
|
+ symbols above are to let you know which side is negative and which is
|
|||
|
positive.
|
|||
|
|
|||
|
Now, let's continue with the tree. On the positive side, we only have B, so
|
|||
|
let's just slap that into the tree (since it's our only pick)...
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
C
|
|||
|
/ \
|
|||
|
B
|
|||
|
/ \
|
|||
|
x x
|
|||
|
|
|||
|
The "x"s mean that there are no more nodes left in that "space", and the tree
|
|||
|
stops. You don't use lines that were already used or lines on the opposite
|
|||
|
side of space... remember, we're splitting space, so when looking at the
|
|||
|
positive side of C, it's as if the negative side doesn't even exist. All that
|
|||
|
we have is B. And then when B splits space again (only splitting the
|
|||
|
positive side of C, no lines are on either side, so it's done.
|
|||
|
|
|||
|
So now we just have to contend with the negative side of C, where A,E, and D
|
|||
|
are hanging out. We have three possible choices, so let's just pick A for
|
|||
|
the heck of it. :)
|
|||
|
|
|||
|
/ \
|
|||
|
/A \-------------
|
|||
|
/ \ B
|
|||
|
/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \
|
|||
|
/ E<><45><EFBFBD> | \
|
|||
|
----- D| \
|
|||
|
| \C
|
|||
|
\
|
|||
|
\
|
|||
|
|
|||
|
Well A has nothing on its negative side, and E and D on its positive side. So
|
|||
|
let's update the tree...
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
C
|
|||
|
/ \
|
|||
|
A B
|
|||
|
/ \ / \
|
|||
|
x | x x
|
|||
|
|
|
|||
|
|
|
|||
|
|
|||
|
(Note: The long line at the bottom is just to make room, but it's from the
|
|||
|
positive side of A).
|
|||
|
|
|||
|
Now we have D and E left. We can pick either of them. But let's see what
|
|||
|
happens when we pick E....
|
|||
|
|
|||
|
/ \
|
|||
|
/A \-------------
|
|||
|
/ \ B
|
|||
|
/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \
|
|||
|
/ E<><45><EFBFBD> D| \
|
|||
|
----------X \
|
|||
|
| \C
|
|||
|
\
|
|||
|
\
|
|||
|
|
|||
|
We've just cut D in half! That's not good. In a BSP tree, there's only
|
|||
|
positive and negative, not both. When splits are encountered, there are two
|
|||
|
options. One is to calculate the split point, and split D into two lines, D+
|
|||
|
and D-. In which case, our final tree would look like this...
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
C
|
|||
|
/ \
|
|||
|
A B
|
|||
|
/ \ / \
|
|||
|
x | x x
|
|||
|
|
|
|||
|
|
|
|||
|
E
|
|||
|
/ \
|
|||
|
D- D+
|
|||
|
|
|||
|
That works, but the problem there is that 1) we have to calculate the split,
|
|||
|
and 2) we've just added another line (or wall) to render. The calculation
|
|||
|
part is not that big a deal. The bad thing is, when you think about a large
|
|||
|
scene, splits can add tons upon tons of polys to the drawing pipeline. That's
|
|||
|
a devastating thing that we must try to avoid.
|
|||
|
|
|||
|
Generally it's impossible to avoid splits completely; they are going to
|
|||
|
happen, so you better make code to handle it when it does. But the fewer the
|
|||
|
better. And because of this, we have a second option to avoid splits...
|
|||
|
|
|||
|
Pick a different node.
|
|||
|
|
|||
|
Even by just choosing D instead of E in our last step,
|
|||
|
|
|||
|
/ |\
|
|||
|
/A | \-------------
|
|||
|
/ | \ B
|
|||
|
/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | \
|
|||
|
/ E<><45><EFBFBD> | \
|
|||
|
----- D| \
|
|||
|
| \C
|
|||
|
| \
|
|||
|
|<7C><><EFBFBD><EFBFBD><EFBFBD> \
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
C
|
|||
|
/ \
|
|||
|
A B
|
|||
|
/ \ / \
|
|||
|
x | x x
|
|||
|
|
|
|||
|
|
|
|||
|
D
|
|||
|
/ \
|
|||
|
x E
|
|||
|
|
|||
|
... we've just eliminated the split. This is the kind of thing you want to
|
|||
|
do when building your trees. Unfortunately, when the scenes are large, you
|
|||
|
don't have the time to build your trees manually, and a program to do it for
|
|||
|
you won't have the luxury of knowing the best way to avoid splits without
|
|||
|
trying every single possible tree combination (called the "brute force"
|
|||
|
method), and that takes an eternity. As if to add another problem to the
|
|||
|
mix, Split Avoidance is not the only goal of a good BSP tree... we also want
|
|||
|
a tree that's as balanced as possible. Take a look at the above tree; it's
|
|||
|
got no splits, but it's pretty unbalanced. But take a look at another
|
|||
|
possible tree of the same scene...
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
D
|
|||
|
/ \
|
|||
|
C A
|
|||
|
/ \ / \
|
|||
|
x B x E
|
|||
|
/ \ / \
|
|||
|
x x x x
|
|||
|
|
|||
|
It's got no splits either, and look how much more balanced it is... we only
|
|||
|
go down three levels deep instead of four. Why is being balanced also
|
|||
|
important? Because when we walk the tree, A) the fewer chain links to
|
|||
|
process the faster it is, and B) on occasion we can eliminate whole branches
|
|||
|
from the pipeline, and the more nodes on the branch being eliminated, the
|
|||
|
better.
|
|||
|
|
|||
|
So which is more important, Split Avoidance or Balancing? It turns out the
|
|||
|
two are generally mutually exclusive goals; the quest for the perfect tree is
|
|||
|
always continuing. For most objects/scenes, the splitless trees aren't as
|
|||
|
balanced as possible, and the most balanced trees have splits. Which is
|
|||
|
better? In truth it depends on the application.
|
|||
|
|
|||
|
We're using the trees for realtime 3D hidden surface elimination, in which
|
|||
|
case both are important, but splitlessness is a slightly higher priority. Not
|
|||
|
that you'll always have a splitless tree though; there are some scenes that
|
|||
|
cannot possibly be done without at least one split. But the lower the
|
|||
|
better. So you want trees that have as few splits as possible, and are as
|
|||
|
balanced as possible, if possible.
|
|||
|
|
|||
|
And you have to make a program that knows this. Sound like fun?
|
|||
|
|
|||
|
I didn't think so. :-)
|
|||
|
|
|||
|
Generally, the common method is what I've heard called the "sample outlook"
|
|||
|
method. What you do is, at each step in the tree generation you pick a
|
|||
|
sample of your nodes (say 10-20%), and pick the one which results in either
|
|||
|
A) the best possible next layer (quick version), or B) the best possible tree
|
|||
|
altogether (long version). When I say quick and long, I don't mean so much
|
|||
|
about how long they take to code, but how long the program runs. The less
|
|||
|
analysis involved, the quicker the generation is (but the less likely that
|
|||
|
the tree will be as good as you can get it). It's a tradeoff, and in my
|
|||
|
opinion, a really good tree is worth the time it takes to go get more coffee,
|
|||
|
so make your program very critical.
|
|||
|
|
|||
|
Also, in case you hadn't already guessed, the tree generation is a recursive
|
|||
|
function, yes. You generate your node and pick two children, then for each
|
|||
|
child, the function calls itself on the child, and the process continues
|
|||
|
until the tree is over (no children to process).
|
|||
|
|
|||
|
The problem is here that picking 10-20% of your possible nodes makes the
|
|||
|
results rather random, and doesn't guarantee a thing. But, for the most part
|
|||
|
it's one of the only ways out there to build a tree...
|
|||
|
|
|||
|
For the most part. ;)
|
|||
|
|
|||
|
_____There Is An Alternative
|
|||
|
|
|||
|
For those interested, I have made an alternative algorithm for tree
|
|||
|
generation. You should be quite familiar with standard methods of building
|
|||
|
first though, in order to understand the algo.
|
|||
|
|
|||
|
The cons are:
|
|||
|
A) Rather complicated to understand
|
|||
|
B) Harder to code
|
|||
|
C) VERY long building time (not nearly as long as brute force though)
|
|||
|
D) Sucks up memory (or disk space) like a hog.
|
|||
|
|
|||
|
The pros though are:
|
|||
|
A) If there is a splitless tree it will most likely find it,
|
|||
|
even with thousands of nodes
|
|||
|
B) If there are multiple splitless trees, it will go for the
|
|||
|
more balanced ones.
|
|||
|
|
|||
|
It can also be modified to prefer balancing, for example, depending on what
|
|||
|
you're looking for. As I said, this is a pretty complex (and weird)
|
|||
|
algorithm, and I can't explain it in here. But if you're familiar with
|
|||
|
standard recursive sampling methods, you might find it interesting.
|
|||
|
|
|||
|
(Incentive to go to NAID) I will most likely be holding a couple coding
|
|||
|
seminars up at NAID, one for beginners, and one more open forum for
|
|||
|
experienced guys. In the open forum I'll be explaining this alternative BSP
|
|||
|
tree method to anyone who asks. And no, it's not BS; it's been verified by
|
|||
|
multiple people already as being quite effective. So if you want to know
|
|||
|
how, and you can make it to NAID, here's another reason to. :-)
|
|||
|
|
|||
|
Okay, enough stupid plugging of my stuff... Time to actually put these trees
|
|||
|
to use! :-)
|
|||
|
|
|||
|
_____Alright, I've Got A Tree. What Do I Do With It?
|
|||
|
|
|||
|
If we've got our tree, using it for polygon displaying is a pretty simple
|
|||
|
matter. Basically, if we think about it, this tree holds a system of what
|
|||
|
polygons are on what sides of each other. So by traversing the tree during
|
|||
|
display, we can get the polygons to show up in correct back-to-front order
|
|||
|
(you can also walk the tree front-to-back if you like, if you have a system
|
|||
|
that would use it).
|
|||
|
|
|||
|
So how do we traverse the tree? Like this...
|
|||
|
|
|||
|
Take our tree (the balanced one, the one we liked more)...
|
|||
|
|
|||
|
- +
|
|||
|
|
|||
|
D
|
|||
|
/ \
|
|||
|
C A
|
|||
|
/ \ / \
|
|||
|
x B x E
|
|||
|
/ \ / \
|
|||
|
x x x x
|
|||
|
|
|||
|
Now lets say, in the Doom analogy, that we have a player at the X in the
|
|||
|
scene...
|
|||
|
|
|||
|
/
|
|||
|
/A ------
|
|||
|
/ B
|
|||
|
|
|||
|
E<><45><EFBFBD> |
|
|||
|
----- D| \
|
|||
|
| \C
|
|||
|
X \
|
|||
|
|
|||
|
By checking which side of the polygon our viewer is on at each node, we
|
|||
|
determine which branch of the tree to take first, and as we return to the
|
|||
|
node before taking the second branch, we draw the polygon. Let's start at
|
|||
|
the top, at node D. Looking at X, it's on the positive side of D. We don't
|
|||
|
walk the positive side of the tree though, we walk the OPPOSITE side, the
|
|||
|
negative one (since it's in the opposite space, generally meaning further
|
|||
|
away). Now we're at node C. We're on the negative side of C, so we walk the
|
|||
|
positive side, to B.
|
|||
|
|
|||
|
But looking at B, it's go no nodes below it. So as if we followed one of
|
|||
|
them, we come right back to it, and draw it...
|
|||
|
|
|||
|
B
|
|||
|
|
|||
|
And we return back up to C. We've just come back to it from the first
|
|||
|
branch, so we draw it next.
|
|||
|
|
|||
|
B C
|
|||
|
|
|||
|
And then we would follow the negative side of C, but there's nothing there,
|
|||
|
so we return back up to D.
|
|||
|
|
|||
|
Now that we're back to D, after walking the first branch, we draw it as well
|
|||
|
|
|||
|
B C D
|
|||
|
|
|||
|
And drop down to A. We're on the positive side of A, so we walk the negative
|
|||
|
branch. And since nothing is there, we return back to A, and draw it.
|
|||
|
|
|||
|
B C D A
|
|||
|
|
|||
|
And follow the same-side branch, down to E. E has no child nodes, so we draw
|
|||
|
it, and notice that we're done, since all five nodes (walls) have been drawn
|
|||
|
(or queued to draw, depending on how you do your system; it's the same
|
|||
|
principle)...
|
|||
|
|
|||
|
B C D A E
|
|||
|
|
|||
|
Now look at that order from X's viewpoint. If you draw the walls in that
|
|||
|
order, they'll be in the correct order from that viewpoint! :-) By doing
|
|||
|
this "which side am I on" checking, you will get a drawing order that works
|
|||
|
perfectly from any position, all the time.
|
|||
|
|
|||
|
The same thing holds over to 3D, by checking your position against the plane
|
|||
|
of each polygon. If you're on the positive side of the plane, go one way, if
|
|||
|
you're on the negative side, go the other. Same thing, but with lines
|
|||
|
instead of planes, and it works every time.
|
|||
|
|
|||
|
Now earlier I mentioned that a balanced tree was not only important for speed
|
|||
|
of recursion, but also because it could eliminate unwanted branches. To
|
|||
|
demonstrate this, pretend that the X character was facing to the upper left
|
|||
|
corner, where it could see part of E and part of A, but none of D or any of
|
|||
|
the others. Well if we think about it, if we're on the positive side of D,
|
|||
|
and none of D's negative space is visible (and I mean that, none of D's
|
|||
|
negative space... D could be invisible while same of its space is, so it's
|
|||
|
the entire space)... then all the nodes in its negative space (in this case,
|
|||
|
C and B) can be discarded right off the bat. No need to process them or
|
|||
|
anything, since there's no way you could see them. This is very very handy,
|
|||
|
and the more balanced the tree, the more you can discard when this kind of
|
|||
|
situation occurs.
|
|||
|
|
|||
|
One final section before I go... throughout this doc you can see how
|
|||
|
everything is based on what side one thing is on from another. But how do
|
|||
|
you find this out?
|
|||
|
|
|||
|
_____Line and Plane Equations Via Normals
|
|||
|
|
|||
|
In order to find out what side a point is on from a line or plane, all you
|
|||
|
have to do is pump the coordinates of the point into the line or plane
|
|||
|
equation, respectively (and checking a line or plane against another line or
|
|||
|
plane is done just by checking both points of the line, or all the vertices
|
|||
|
of the plane, so in the end it comes down to points).
|
|||
|
|
|||
|
But how do we know the equation of the line or plane to test against? Here's
|
|||
|
where our wonderful normals and dot products come in again. :-)
|
|||
|
|
|||
|
If you're pre-storing your normals, then by just pre-storing one more value
|
|||
|
you can have the entire equation of a line or plane right at your fingertips.
|
|||
|
For any line with the equation
|
|||
|
|
|||
|
Ax + By + C = 0
|
|||
|
|
|||
|
it turns out that A and B are the components of the normal of the line, and
|
|||
|
-C is a constant, equal to (Normal.P1), where . is the dot product function,
|
|||
|
and P1 is the first point of your line segment, the one where the normal was
|
|||
|
determined from. Once you have this equation (which is pre-stored as just
|
|||
|
the normal and that constant, -C), you plug in the coordinates of the point
|
|||
|
to check against into x and y. The result will give you 0 if the point is on
|
|||
|
the line, but it will also be positive if the point is on the positive side,
|
|||
|
and negative if the point is on the negative side. The value itself doesn't
|
|||
|
matter, it's just the sign that counts. Let's do an example. Say we have a
|
|||
|
line from (0,0) to (1,1). If our positive side is to the lower right, then
|
|||
|
our normal from P1 goes from (0,0) to (1,-1). And
|
|||
|
|
|||
|
Normal.P1 = (Nx*P1x + Ny*P1y) = 1*0 + (-1*0) = 0.
|
|||
|
|
|||
|
Sure enough, the equation for the line is
|
|||
|
|
|||
|
Ax + By + C = 0 -> 1x + (-1)y + -(0) = 0 -> x - y = 0
|
|||
|
|
|||
|
Take any point on that line, and the result is 0, like in the equation.
|
|||
|
But take a point on the positive side, like (4,2) and you get
|
|||
|
|
|||
|
x - y = 0 -> 4 - 2 = 2
|
|||
|
|
|||
|
... and the result is positive. Similarly, a negative-side point will give a
|
|||
|
negative side result. So just plug in the numbers of the point to check,
|
|||
|
look at the sign of the result, and boom, off ya go. :-)
|
|||
|
|
|||
|
The same thing holds for plane equations in 3D, where
|
|||
|
|
|||
|
Ax + By + Cz + D = 0
|
|||
|
|
|||
|
Sure enough, A, B, and C are Nx, Ny, and Nz, the components of the normal to
|
|||
|
the plane. And -D is (N.V1) where N is the normal and V1 is vertex 1, i.e.
|
|||
|
the vertex where your normal was based from (the center point of the two
|
|||
|
vectors in the cross product... remember the cross product? :-) By plugging
|
|||
|
in numbers, you check what side the point is on during BSP tree walking with
|
|||
|
just three multiplies for a 3D plane...
|
|||
|
|
|||
|
(Nx*x) + (Ny*y) + (Nz*z) - (N.V1) = Result
|
|||
|
|
|||
|
where N.V1 is precalculated and Result holds the sign value giving the side
|
|||
|
that (x,y,z) is on. Sound simple? That's all there is to it. :) You use
|
|||
|
the same thing in tree generation to determine sidedness, by checking each
|
|||
|
point. If all the points are on one side or the other, you know the side of
|
|||
|
the whole line or plane. If not, then a split has occurred. Be warned
|
|||
|
though, if you use floating point, that you'll want to make room for a bit of
|
|||
|
rounding error. A result of 0.00002 doesn't necessarily mean that the point
|
|||
|
is on the positive side; it could be rounding error, and sometimes you can
|
|||
|
use this as an excuse to fudge (especially if all but one of the points is on
|
|||
|
one side, and the one that isn't is only off by a tiny margin).
|
|||
|
|
|||
|
(PS: Nifty trivia... take a look at the BSP tree of any sphere (including
|
|||
|
cubes, which are six sided spheres)... you'll notice the tree is not exactly
|
|||
|
balanced, is it? :-)
|
|||
|
|
|||
|
_____That's About It!
|
|||
|
|
|||
|
If you have any questions, feel free to email me. Although I might be a
|
|||
|
little delayed in replying, I respond to pretty much everyone. :) Also, look
|
|||
|
for the supplement source to this volume and volumes 3 and 4 sometime shortly
|
|||
|
after NAID (May 31-June 2). And speaking of NAID, if you can make it, make
|
|||
|
it! It's gonna be a great time, I guarantee it. :-D
|
|||
|
|
|||
|
Until next time (or NAID),
|
|||
|
|
|||
|
Kiwidog / Hornet , Terraformer - kd@ftp.cdrom.com
|
|||
|
|
|||
|
|
|||
|
=----------------------------------(NAID: As if You Were Here)--(White Noise)-=
|
|||
|
|
|||
|
Never done before. New. Kewl. See it. Hear it.
|
|||
|
|
|||
|
Be there, even if you can't attend. "NAID 96: as if you were here", the NAID
|
|||
|
live web site.
|
|||
|
|
|||
|
http://naid.conceptech.qc.ca is the URL to remember. Until the 31st, stop by
|
|||
|
the ad page, at http://flash.intersignal.net/naid.
|
|||
|
|
|||
|
Can _you_ afford to miss it?
|
|||
|
|
|||
|
See you there.
|
|||
|
|
|||
|
White Noise / Dusk Till Dawn - jeff@ego.psych.mcgill.ca
|
|||
|
|
|||
|
|
|||
|
=--------------------------------------------(Imphobia 12 Voting)--(Darkness)-=
|
|||
|
|
|||
|
Hi there Demonews readers.
|
|||
|
|
|||
|
Here is just a little note to tell you all that the deadline for the Imphobia
|
|||
|
charts voting is near. So, if you haven't done it yet, you should all
|
|||
|
consider filling out an Imphobia voting form and send it to me to my email
|
|||
|
address. If you haven't got a form yet, you can leech it from Hornet
|
|||
|
/incoming/news directory under the name imp12vot.zip.
|
|||
|
|
|||
|
You got the right to vote, use it!
|
|||
|
|
|||
|
Darkness / Imphobia - jeff.van.audenhove@infoboard.be
|
|||
|
|
|||
|
|
|||
|
=-----------------------------------(FunktrackerGOLD for Linux)--(Jason Nunn)-=
|
|||
|
|
|||
|
FunktrackerGOLD Beta version 0.0 for Linux/Unix now available! Experience
|
|||
|
the power and beauty of tracking and unix combined.
|
|||
|
|
|||
|
ftp://ftp.cdrom.com/pub/demos/incoming/music/programs/fnkgld00.tgz
|
|||
|
ftp://sunsite.unc.edu/pub/Linux/Incoming
|
|||
|
|
|||
|
For more information, email me or check out:
|
|||
|
http://darwin.topend.com.au/~jsno/projects.html
|
|||
|
|
|||
|
Jason Nunn - jsno@darwin.topend.com.au
|
|||
|
|
|||
|
|
|||
|
==[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.
|
|||
|
|
|||
|
_____How to subscribe to Music Contest 4 Updates
|
|||
|
|
|||
|
Mail to : listserver@unseen.aztec.co.za
|
|||
|
Body : subscribe mc4-updates [first_name] [last_name]
|
|||
|
|
|||
|
_____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.123.
|
|||
|
|