aboutsummaryrefslogtreecommitdiff
path: root/docs/features_nel_3d.php
blob: 5791aba798c40ffa2f54343932c7e0e9fa5a2b95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
	<TITLE>Nevrax.org : docs</TITLE>
	<META  name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
	<LINK REL=stylesheet TYPE="text/css" HREF="/inc/css/nevrax.css">
</HEAD>
<BODY MARGINHEIGHT="0" MARGINWIDTH="0">

<!-- uplinks -->
<TABLE CELLSPACING=0 CELLPADDING=0  BORDER=0>
 <TR>
        <TD WIDTH=16><IMG  SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
        <TD WIDTH=140 BGCOLOR=#dddddd><IMG  SRC="/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
        <TD WIDTH=16><IMG  SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
        <TD><IMG width=6 height=14 SRC="/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF='/'><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
        <TD><IMG  width=6 height=14  SRC="/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
 </TR>
</TABLE> 

<!-- banner Nevrax -->
<TABLE CELLSPACING=0 CELLPADDING=0  BORDER=0 WIDTH=100%>
 <TR><TD  BGCOLOR="#000000" BACKGROUND="/inc/img/black_banner.jpg"><A HREF=""><IMG  SRC="/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax"></A></TD></TR>
</TABLE>

<!-- main table -->
<TABLE CELLSPACING=0 CELLPADDING=0  BORDER=0 height=100%>
 <TR>
	<TD WIDTH=16><IMG  SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
	<TD WIDTH=140   BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG  SRC="/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">

		<!------ Begin Box ------>
		<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0  cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
		<FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td  colspan=2 bgcolor=#FFFFFF>
		<TABLE cellspacing=0 cellpadding=1 border=0>
			<tr><td ALIGN=middle><a  class='linkbox' href="/news/" TITLE="Rubrique news"><img width=13 height=15  hspace=5 border=0 src=/inc/img/picto-news.gif ALT=#></A></td><td><a  class='linkbox' href="/news/" TITLE="News">News</a></td></tr>
			<tr><td ALIGN=middle><a  class='linkbox' href="/mail/" TITLE="Rubrique mail"><img width=15 height=11  hspace=5 border=0 src=/inc/img/picto-mail.gif ALT=#></A></td><td><a  class='linkbox' href="/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
			<tr><td ALIGN=middle><a  class='linkbox' href="/docs/" TITLE="Rubrique docs"><img width=14 height=16  hspace=5 border=0 src=/inc/img/picto-docs.gif ALT=#></A></td><td><a  class='linkbox' href="/docs/" TITLE="Documentation">Documentation</a></td></tr>
			<tr><td ALIGN=middle><a  class='linkbox' href="/cvs/" TITLE="Rubrique cvs"><img width=13 height=17  hspace=5 border=0 src=/inc/img/picto-cvs.gif ALT=#></A></td><td><a  class='linkbox' href="/cvs/" TITLE="CVS Web">CVS</a></td></tr>
<!--			<tr><td ALIGN=middle><a  class='linkbox' href="/bugs/" TITLE="Rubrique bugs"><img width=20 height=16  hspace=5 border=0 src=/inc/img/picto-bugs.gif ALT=#></A></td><td><a  class='linkbox' href="/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>-->
			<tr><td ALIGN=middle><a  class='linkbox' href="/free/" TITLE="Rubrique license"><img width=18 height=12  hspace=5 border=0 src=/inc/img/picto-free.gif ALT=#></A></td><td><a  class='linkbox' href="/free/" TITLE="Free Software">Free software</a></td></tr>
			<tr><td ALIGN=middle><a  class='linkbox' href="/download/" TITLE="Rubrique download"><img width=13 height=17  hspace=5 border=0 src=/inc/img/picto-cvs.gif ALT=#></A></td><td><a  class='linkbox' href="/download/" TITLE="Download">Download</a></td></tr>
			<tr><td ALIGN=middle><a  class='linkbox' href="/suggest/" TITLE="Rubrique suggest"><img width=14 height=16  hspace=5 border=0 src=/inc/img/picto-docs.gif ALT=#></A></td><td><a  class='linkbox' href="/suggest/" TITLE="FS Suggest">FS Suggest</a></td></tr>
			<tr><td ALIGN=middle><a  class='linkbox' href="/faq/" TITLE="Rubrique suggest"><img width=14 height=16  hspace=5 border=0 src=/inc/img/picto-docs.gif ALT=#></A></td><td><a  class='linkbox' href="/faq/" TITLE="FAQ">FAQ</a></td></tr>
		</TABLE>
		</TD></TR></TABLE></TD></TR></TABLE>
		<!------ End Box  ------>
		

	</TD>
	<TD WIDTH=15><IMG  SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
	<TD ALIGN=left valign=top><IMG  SRC="/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">

<!-- title -->
<TABLE  background="/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0  BORDER=0 width=100%><tr><td>
<A HREF="/docs"><img src="/inc/img/t_docs.gif" ALT="docs"  HEIGHT=20 BORDER=0></A>
</td><td><IMG  SRC="/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
</td></tr></table>

<!-- End header -->


<!-- NeL 3D Library : Features -->
<table width=100%><tr><td align=left><b>NeL 3D Library : Features</b></td><td align=right><b></b></td></TR></TABLE>


<H2>Introduction</H2>

<p>The NeL 3D library includes 3D audio and video rendering modules.</p>
<p>The objective of the 3D library is to provide an architecture framework for housing the code modules required for representing a virtual universe, and its contents, in 3D.</p>
<p>Nevrax are developing the code modules required to represent the universe that their product is based around.  This universe includes animated characters, objects and special effects in a variety of environments including undulating terrain, towns and the insides of buildings.</p>

<H3>Portability</H3>
<P>NeL's 3D library is structured in layers built on top of a common driver layer. The Nevrax team are working with an OpenGL implementation of the driver layer, though there will certainly be further implementations for other graphics systems such as DirectX.</P>
<P>NeL is currently tested on GNU/Linux and Microsoft Windows platforms.</P>

<h3>Target Platforms</h3>
<P>There are background loading and dynamic level of detail systems that apply to all components of the 3D library, allowing the software to be addapted to run efficiently on different specifications of hardware.
<P>The target test machine spec is as follows:</P>
<UL>
	<li>Intel Pentium3 1GHz
	<li>Graphics card comprising Nvidia NV20 chipset
	<li>128MBytes RAM
	<li>4GBytes free space on hard disk
	<li>DVD-ROM
	<li>Sound card - minimum spec to be defined
</UL>
<P>Nevrax expect their product to run at 30fps at 1024x768 resolution on a machine of this spec</P>

<H2>Features</H2>

<H3>Undulating Landscapes</H3>
<UL>
	<li>Bezier patch landscape modeling gives NeL enormously more flexibilty than traditional height fields.  NeL supports vertical faces, overhangs, and so on.
	<li>The ROAM algorithm is used to provide adaptive subdivision of the landscape based on distance from the camera, steepness, etc. 
	<li>Geomorphing is used between LODs (levels of detail) to eliminate popping.
	<li>Landscape colouring effects include vertex colouring and application of pre-calculated shadow maps. Pre-calculated shadows can have soft edges while real-time shadows obviously can not. Shadows can be coloured and faded at run time
	<li>Lightmaps are used for landscape lighting to avoid lighting changing with LOD transitions
	<li>Landscape texture mapping at a constant 1.5cm/ texel, with the possibility of a second complete additive texture layer. Texture continuity breaks due to bilinear filtering have been eliminated.
	<li>Landscape is dynamicaly streamed into memory with background loading
	<li>'Snap To Ground' functionality allows objects that are on the ground to remain attached to the surface as it geomorphs
</UL>
<I>To be developed :</I>
<UL>
	<li>Displacement maps (also known as geometric noise) - these are taken into account during lightmap generation which means that they can still be 'seen' at low levels of detail
	<li>Dynamic lighting
	<li>Support for scrolling shadow maps on the ground (to represent moving clouds)
</UL>

<H3>Portal based Streets and interiors</H3>
<UL>
	<li>Static light maps: up to 3 layers of light map simultaneously - each layer can be enabled, dissabled, faded or coloured in real time
	<li>Tools: ligh map generation: max plugin: support for different lamp types, ray tracing for shadows, projected images (like a slide projector), support for coloured translucent objects influencing light colour (eg coloured glass), support for saturation (with lighting at > 100%), mixing of vertex colours into light map calculation
</UL>
<i>To be developed</I>
<UL>
	<li>Use of portal algorithm for view determination 
	<li>Support for portals for view casting from interiors into the landscape mesh
</UL>

<H3>Characters and objects</H3>
<UL>
	<li>Component based object construction, which allows the assembly of multiple "parts" of objects into a single mesh around a single skeleton
</UL>
<i>In development</i>
<UL>
	<li>Multi-Resolution Meshes, to provide a smooth reduction in polygon count as objects retreat into the distance. Full implementaion of the technicque presented by Hope, in a recent paper, with geomorphing. This implementation provides superior results for low detail LODs and smooth transitions between LODs.
	<li>Optimised management of extremely low detail 'billboard' versions ofobjects
	<li>The LOD system is capable of working with a subset of the LODs. This means that the high detail LODs don't have to be loaded if there is insuffricient memory or if the client machine is not sufficiently powerful to make use of them.
</UL>

<H3>Animation</H3>
<UL>
	<li>Skinning: support for skinning with up to 4 matrices per vertex
	<li>Smooth transitions between animations 
	<li>Controlable blending of multiple animations (eg 70% walk + 30% limp)
	<li>Application of different animations to different parts of skeleton (eg run + punch)
	<li>Animation types (so far): bones, material & light parameters
	<li>Animation export plugins for 3DStudio Max: feature more or less complete set of 3DStudio animation controlers (bezier, tcb, linear, etc) and support for biped (Character Studio) skeleton
	<li>Skinning export plugins for 3DStudio Max: support both physique (character studio) & com_skin2 skinning data
</UL>
<i>To be developed :</i>
<UL>
	<li>Blended Shape animation, to provide morphing and lip-sync style animations
	<li>Inverse kinematics - a very simple and restrictive solver intended only for slight animation adjustments such as snapping feet to ground.
	<li>Animation types: blend shape blend sliders, logical data such as audio triggers, etc.
</UL>

<H3>Materials</H3>
<UL>
	<li>Support for environment mapping, multi-texturing, texture-colouration.
	<li>Tools: more or less complete support for 3ds max materials
</UL>
<i>To be developed : </i>
<UL>
	<li>Support for bump mapping
	<li>Vertex and pixel shader implementations for GeForce3 and above
</UL>

<H3>Particle system</H3>
<UL>
	<li>Support for various particles representations, including  dot, line, triangles fans, bitmaps, shockwave, ripples, meshes.
	<li>A variety of emitters are available : mesh, cone, plane, points and sphere emitters.
	<li>Forces can be applied to particles
	<li>Support for simple collision shapes for particles
	<li>Support for LOD with distance
	<li>Tools: custom WYSIWYG editor
</UL>
<I>To be developed :</I>
<UL>
	<li>Particle systems can cast light into the scene and be lit by scene lights
	<li>Integration of tools with Max and with animation exporters
</UL>

<H3>Other Special Effects</H3>
<i>To be developed : </I>
<UL>
	<li>Screen distortion effects
	<li>Real time shadow casting
	<li>Water rendering effects
</UL>

<H3>Audio</H3>
<I>In development :</I>
<UL>
	<li>2D and 3D audio engine
	<li>Management of localised environment sounds (migration between 3d and 2d effcts)
	<li>Management of audio environment (effect of environment on sound, etc)
	<li>Scripted composite sounds for environments including cross fades between randomly selected loops with an additional layer of randomly triggered spot sounds
	<li>Open AL/ Direct Sound implementations
</UL>

<H3>Technical Features</H3>
<UL>
	<li>Exploitation of 3D graphic accelerator cards' TNL, pixel shader and vertex shader capabilities.
	<li>Adaptive memory management with background hard disk data streaming.
	<li>Adaptive texture and polygon detail to manage CPU load, GPU load and video memory constraints. 
</UL>
<i>To be developed :</i>
<UL>
	<li>GeForce 3 optimisation
</UL>


<!-- footer -->
<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
</TD>
<TD WIDTH=15><IMG  SRC=/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
</TR>
</TABLE>

</BODY>
</HTML>