US20100060640A1
2010-03-11
12/492,129
2009-06-25
In the field of rendering a three dimensional model into a two dimensional graphical representation, the resources available to a general purpose computer can be used to efficiently render the scene. The high speed/low computer resource with which the rendering is performed results from utilizing different inputs to the rendering engine and from the manner in which the rendering engine handles these inputs.
Get notified when new applications in this technology area are published.
G06T15/08 » CPC main
3D [Three Dimensional] image rendering Volume rendering
G06T15/20 » CPC further
3D [Three Dimensional] image rendering; Geometric effects Perspective computation
The present invention is in the field of rendering a three dimensional model into a two dimensional graphical representation utilizing the limited computer resources available to a general purpose computer. The high speed/low computer resource with which the rendering is performed results from utilizing different inputs to the rendering engine and from the manner in which the rendering engine handles these inputs.
Rendering generates an image from a model by means of computer software. The starting point, i.e. the model, is a description of a three dimensional (â3Dâ) object in a defined language or data structure. The language or data structure contains information on geometry, viewpoint, texture, lighting, and shading. Rendering is one of the major sub-topics of 3D computer graphics and is the last major step in the graphics pipeline, giving the final appearance to the models and animation. As computer graphics became more sophisticated, rendering became more and more important and absorbed a greater proportion of emphasis in the graphics pipeline.
Rendering is utilized in video games, interior design, architecture and entertainment video special effects, with different emphasis on techniques and features applicable to each. Animation software packages include a modeling and a rendering engine. A rendering engine utilizes optics, physics, human visual perception, mathematics and software development in creating video graphics. Due to its complexity, rendering is often performed slowly and may be handled through pre-rendering. Pre-rendering is a computationally intensive process that is typically used for movie creation or other non-interactive applications, i.e. where the graphics is âstillâ or proceeds without intervention via a user or other computer program. Real-time rendering, i.e. rendering including changes via a user or other computer program, is necessarily utilized in video games. Real-time rendering typically relies upon the combination of software and graphics cards with 3D hardware accelerators. High quality real time rendering in 3D has become more economically feasible with growing memory and computing capabilities.
A pre-image is completed first, including a wireframe model of one or more components. Typically, the wireframe model is made up of many polygons. At its most basic, a polygon model is a mesh of triangles and quadrangles fully representing each viewable surface of the modeled objects. Once the pre-image is complete, rendering adds textures, lighting effects, bump mapping and relative position to other objects. The rendered image possesses a number of visible features. Simulation of these features is the focus of advances in rendering.
Rendering terms include: shadingâvariation of the color and brightness of a surface with lighting; texture-mappingâapplying detail to surfaces; bump-mapping simulating small bumps on surfaces; fogging/participating mediumâdimming of light when passing through an atmosphere containing suspended particulates; shadowsâobstructions interfering with light; soft shadowsâvarying darkness caused by partially obscured light sources; reflectionâmirror-like or highly glossy redirection of light; transparency vs. opacity transmission of light vs. absorption/reflection of light; translucencyâtransmission of light through solid objects with substantial scattering; refractionâtransmission of light through medium that alters speed of transmitted light; diffractionâbending, spreading and interference of light passing by an object or aperture that disrupts the ray; indirect illuminationâillumination by light other than directly from light source (also known as global illumination); causticsâa type of indirect illumination, including reflection of light off a shiny object, or focusing of light through a transparent object, to produce bright highlights on another object; depth of fieldâobjects appear blurry or out of focus when too far in front of or behind the object in focus; motion blurâobjects appear blurry due to high-speed motion, or the motion of the camera; non-photorealistic renderingârendering of scenes in an artistic style, intended to look like a painting or drawing.
Numerous algorithms have been developed and researched for rendering software. Such software employs a number of different techniques to obtain a final image. While tracing every ray of light in a scene is impractical and would take an enormous amounts of time, this is the ideal since this is essentially what the human eye does. Even tracing a large enough portion to acquire an image approximating human vision can take a great amount of time if the sampling is not intelligently restricted. Thus, four motifs of efficient light transport modeling have emerged: rasterisationâprojects the objects of a scene to form an image, with no facility for generating a point-of-view perspective effect; ray castingâobserves the scene from one point-of-view, calculating only geometry and very basic optical laws of reflection intensity, and perhaps using Monte Carlo techniques to reduce artifacts; radiosityâuses finite element mathematics to approximate diffuse spreading of light from surfaces; and ray tracingâsimilar to ray casting, but employing more advanced optical simulation, and usually uses Monte Carlo techniques to obtain more realistic results at a speed that is often orders of magnitude slower. Advanced software typically combines two or more of the techniques to obtain good-enough results at reasonable cost.
For purposes of speed, a model to be rendered necessarily contains elements in a different domain from basic video picture elements (âpixelsâ). These elements are referred to as primitives. In 3D rendering, triangles and polygons in space are often the utilized primitives. The rendering engine loops through each primitive, determines which pixels in the image it affects, and modifies those pixels accordingly. This is called rasterization, and is the rendering method used by all current graphics cards. Rasterization is faster than pixel-by-pixel rendering primarily because areas, perhaps even a majority, of the image has no primitives; rasterization, unlike pixel-by-pixel, is able to skip these areas. In addition, rasterization improves cache coherency and reduces redundant work by taking advantage of the fact that the pixels occupying a single primitive can often be treated identically. Thus, rasterization is typically utilized when interactive rendering is required. This does not change the fact that pixel-by-pixel rendering produces higher-quality images and is more versatile, relying on less presumptions than an approach relying on primitives.
At its most basic, rasterization renders an entire face (viewed primitive surface) as a single color. However, a greater level of detail may be achieved by rendering the vertices of a primitive and then rendering the pixels of that face as a blending of the vertex colors. Although such a method utilizes greater resources than basic rasterization it is still far simpler than pixel-by-pixel and it allows the graphics to flow without complicated textures. Textures are used with a face-by-face rasterized image to compensate for block-like effects. It is possible to use one rasterization method on some faces and another method on other faces based on the angle at which that face meets other joined faces, resulting in increased speed and at minimal image degradation costs.
Ray casting is used for real time simulations, e.g. computer games and cartoon animations, where need for detail is outweighed by need to âfakeâ details to obtain better rendering performance. The resulting surfaces can appear âflatâ. The model is parsed pixel-by-pixel, line-by-line, from the point of view (âPOVâ) outward, as if casting rays out from the POV. Pixel color may be determined from a texture-map. A more sophisticated method modifies the color by an illumination factor. Averaging a number of rays in slightly different directions may be used to reduce artifacts. Simulations of optical effects may also be employed, e.g. calculating a ray from the object to the POV and/or calculating the angle of incidence of rays from light sources. Another simulation that may be combined with these simulations uses a radiosity algorithm to plot luminosity.
Radiosity (also known as global illumination) methods simulate the way in which illuminated surfaces act as indirect light sources for other surfaces and produces more realistic shading. The physical basis for radiosity is that diffused light from a given point on a given surface is reflected in a large spectrum of directions and illuminates the area around it. Advanced radiosity simulation coupled with a high quality ray tracing algorithm results in convincing realism, particularly for indoor scenes. Due to the iterative/recursive nature of the technique, i.e. each illuminated object affects the appearance of its neighbors and vice versa, scenes including complicated objects absorb huge computing capacity. Advanced radiosity utilization may be reserved for particular circumstances, e.g. calculating the ambiance of the room without examining the contribution that complex objects make to the radiosity. Alternatively, complex objects may be replaced in the radiosity calculation with simpler objects of similar size and texture.
Ray tracing is an extension of scanline rendering and ray casting and handles complicated objects well. Unlike scanline and casting, ray tracing is typically based on averaging a number of randomly generated samples from a model, i.e. Monte Carlo based. The randomly generated samples are imaginary rays of light intersecting the POV from the objects in the scene. Ray tracing is sometimes used where complex rendering of shadows, refraction or reflection are needed. In high quality ray trace rendering, a plurality of rays are shot for each pixel, and traced through a number of âbouncesâ. Calculation of each bounce includes physical properties such as translucence, color, texture, etc. Once the ray encounters a light source or otherwise dissipates, i.e. ceases to contribute substantially to the scene, then the changes caused by the ray along the rays path are evaluated to estimate a value observed at the POV. Ray tracing is usually too slow to consider for real-time and only useful for production pieces with large lead times. However, efforts at calculations optimizing have led to wider use of ray tracing.
The Rendering Equation is a key concept in rendering. It is a formal expression of the non-perceptual aspect of rendering. Rendering algorithms in general can be seen as solutions to particular formulations of this equation:
L O î˘ ( x , w â ) = L e î˘ ( x , w â ) + ⍠Ί î˘ f r î˘ ( x , w â Ⲡ, w â ) î˘ L i î˘ ( x , w â Ⲡ) î˘ ( w â Ⲡ¡ n â ) î˘ î˘ ď w â â˛
As calculated by the Rendering Equation, the outgoing light (Lo) at a particular position and direction, is the sum of the emitted light (Le) and the reflected light (sum of incoming light (Li) from all directions multiplied by surface reflection and incoming angle). This equation represents the entire âlight transportâ in a scene, i.e. all movement of light.
Obviously, given the foregoing, the computing resources necessary for âreal timeâ rendering of a scene containing more than several objects of even vaguely complicated structure are extremely high and, still, beyond the standard home computers and laptops utilized by average users. Even high-end general purpose computers provided with expensive video graphics card may not provide the necessary resources. Adding âhigh qualityâ, i.e. approaching photo-realism, to the above parameters further increases the necessary computing resources over and above those currently generally available and likely to be available in the not too distant future.
Interactive Atmosphere Active Environmental Render is referred to herein as âia AERâ. As the name suggests, ia AER differs from all classical approaches to rendering, but it also distinguishes itself from what has come to be known as volume rendering. The objective of ia AER as a process is to allow rendered scene to be viewable and accessible in real-time while also making it completely interactive, i.e. modifiable. Our objective differs from classical rendering methods, because the objective is not to simply render a frame or map, our objective is to render the entire volume or environment as a 3D space. In order to make offline render available in real-time, such as in gaming industry applications, the real-time render functions are supported by and carried out by the hardware and software rendering algorithms. However, in order to produce high quality images in real-time, the offline method first renders in high quality, then it produces light maps of various objects in the scene to gain realism, it then sends the entire readymade scene to be viewed as a âreal-timeâ scene with the aid of the available hardware and software renderings.
The present ia AER is a powerful and fast rendering invention oriented to real-time and interactive viewing. The ia AER can produce from both fast speed and low bandwidth quality scenes up to photorealistic rendered scenes; it is oriented to real-time and interactive view without any video card dependencyâunlike all classical physical lighting rendering methods. The ia AER is a ârealâ 3D rendering engine, because it does not render the âframeâ factor. In fact ia AER does not work around the concept of a frame; it processes the entire environment with which it is presented. The rendered volume can then be viewed from and interacted with in any angle within the environment, even from sides that are invisible to the camera. This means that we are not limited to a fixed âviewpointâ but can easily and immediately âwalk-aroundâ the entire scene in high quality 3D imagery, but also to interact and modify the objects that are âalreadyâ rendered.
In ia AER the volume of a 3D scene is rendered for each 3D point available in the volume. Once the scene or environment is volume rendered, the scene is available for real-time view, where each frame corresponds to the normal rendered image.
The ia AER defines a cubical volume, which captures contents of the scene. In fact our scene is described as a set of 3D points in a cube. This render method is not based on a viewpoint; it renders the entire environment and the volume points in the scene.
FIG. 1 is a 2D rendering of a 3D scene with an overlay of a Cartesian coordinate system and showing three vectors of the coordinate system;
FIG. 2 is a 2D rendering of a 3D scene;
FIG. 3 is a 2D rendering of a 3D scene;
FIG. 4 is a 2D rendering of a 3D scene with an overlay of a Cartesian coordinate system, showing three vectors and further features of the coordinate system;
FIG. 5 is a 2D rendering of a perspective view of a 3D object;
FIG. 6 is a 2D rendering of a perspective view of a 3D polygon;
FIG. 7 is a 2D rendering of a 3D scene with vector information;
FIG. 8 is a 2D rendering of a simplified light vector example;
FIG. 9 is a 2D rendering of a 3D scene of a desktop;
FIG. 10 is a 2D rendering of a 3D scene of a bedroom;
FIG. 11 is a 2D rendering of a 3D scene of a different bedroom;
FIG. 12 is a 2D rendering of a 3D scene of a dining area;
FIG. 13 is a 2D rendering of a 3D scene showing various shapes and vectors;
FIGS. 14a and 14b are different perspectives of the same surface;
FIGS. 15a and 15b are different vector effects on the same 3D object;
FIG. 16 is a volume and effect of rendering such volume using three different points;
FIG. 17 is illustrative volume surfaces;
FIG. 18 is a flowchart showing the logic of a scene rendering;
FIG. 19 is a flowchart showing the logic of the compressed scene; and
FIG. 20 is a flowchart showing a method of adaptive 3D compression.
The ia AER was developed as a research project for engendering cases, in order to understand how a given geometry and the ensuing modeling were constructed.
In the case of classical render engines all the objects in the viewpoint are included by default in the rendering process and everything else outside of the viewport are excluded. In ia AER by contrast, you must include by choice the objects that are to be rendered and ia AER renders the volume and projects it to an object.
The projected ia AER map is NOT a light map, it contains the following information:
CUBICAL VOLUME AND ORIENTATION POINT: Each scene is placed in the cubical volume, as seen in FIG. 1. However, light 1 is used as projection orientation point. Light 1 may also be placed in the center of the cube if it is so desired. The ia AER projects a volume to the objects placed in the scene; this projection begins and is depends on/is computed from the primary light source, i.e. light 1. As can be seen in FIG. 2 the sides that are âvisibleâ to light 1 are illuminated. So, light 1 is formally named as AER (VR) center with âVRâ short for volume render. For some specific cases such as flat objects and faceted objects, orientation of light 1 is not necessary. For faceted projection, all sides of the objects are projected. However to make efficient use and optimize the processor and the RAM, the best method to render the scene is to orient it to the single point AER (VR) center. This avoids unnecessary calculations and the use of extended memory. Rendering of the scene can be performed part by part. You can include or exclude any object in the AER process. By default, all objects are excluded from the AER process. This allows manually choosing which object is necessary for correct, which can be simulated by texture or alternative manual methods.
Because ia renders the volume which then can be viewed in real-time, i.e. the AER process takes time but the amount of time is different from classical and traditional rendering methods. The ia AER's rendering time is much faster than the time it takes the traditional rendering engines to produce similar renders. It renders from 100 to 1000 frames depending on scene complexity and volume zones. This means that if ia AER takes 20 minutes, it would render about 400 classical method frames and for complex scenes about 1000 âclassicalâ frames. However, ia AER is considered much faster when one factors in that the âentireâ scene has been rendered not just the viewpoint. Rendering of very complex scenes with light scattering, reflex, and GI factors would usually takes about 10 minutes.
FIG. 3 illustrates an example of rendering of four objects oriented from Light 1. Light 1 represents the light source. We provide here a simple example of rendering. In this example there is no light scattering. But we can see that shadows and lighting is computed correctly on all objects (even in the case of a curved one). After rendering you can walk in the scene to see it from all available viewpoints. This example contains approximately 30,000 polygons.
FIG. 3 shows a complex lighting example where the ambient light is created based on 60 light sources. Light scattering is computed correctly and shadows are constructed as in real-life ambiant lighting by multiple light sources including light 1. The scene is still available in real-time and viewable from any viewpoint after rendering.
DEFINITIONS: Before detailed description of ia AER we must define some terms for generating accurate volume renders used herein.
The present invention is generally achieved as follows:
THE METHOD OF DEFINING VOLUME CUBE: The following steps are used to define the volume cube, it is simply finding of the bounding box of the scene or scene fragment:
THE METHOD OF DIVIDING THE VOLUME CUBE INTO SEGMENTS: This is accomplished by the following steps:
X=Xmin+i*Îx
Y=Ymin+j*Îy
Z=Zmin+k*Îz
The width, height and depth of each segment are equal to Îx, Îy, Îz for that segment.
DEFINING AN ACTIVE AREA OF THE VOLUME (ACTIVE VOLUME): This task allows defining an active volume, which means that all the unnecessary parts will be excluded from the rendering process. This process is dependent on the existence of is AER (VR) center.
First stage: Fill the Output Matrix ACTIVE field to false, for each I,J,K segments. The ACTIVE field is used to define whether a segment is active or not. By default all segments are inactive. There are 2 methods to define an active volume.
| Method #1: |
| For each object in the scene do |
| If object exists in the bounding box do |
| For each polygon of the object do | |
| (in case if VR center exists, check if polygon is visible from VR | |
| center) | |
| If polygon bounding box is smaller than volume cube segment |
| delta then attach whole polygon to segment |
| else |
| For each point of the polygon surface do |
| Check to which volume segment the point should be assigned |
| (find by simple formula (surfaceX â minX)% delta) | |
| Method #2 (simple method): |
| For each I,J,K segment in the volume cube do |
| For each object do |
| (in case if VR center exists, check if polygon is visible from VR |
| center) |
| For each surface point do |
| If point inside the I,J,K segment boundary box than |
| attach it to segment | |
Second stage: Fill the Output Matrix ACTIVE field to true for each I,J,K segment in case if segment has an attached point or polygon.
THE METHOD OF RENDERING ACTIVE VOLUME CUBE: The rendering process uses the following:
| For each segment in the volume cube |
| If segment is active do |
| For each point attached to segment do | |
| { |
| Calculate lighting output for each R,G,B channel | |
| Compute average lighting for the segment and store it in |
| the OutputMatrix[i] [j] [k] | |
| } | |
MORE DETAILS ABOUT LIGHTING CALCULATIONS: The following C++ algorithm shows how multiple lighting sources are computed for a given volume fragment:
| miaWriteLog(âConstructing ia AER surfaceâ); |
| allLightList.Listâ>DeleteAll( ); | |
| allLightList.Listâ>AddItems(LightList.List); | |
| allLightList.Listâ>AddItems(&giLights); | |
| objectLightList.Listâ>DeleteAll( ); | |
| if (!GlobalVRCheckForErrors) |
| for (int i=0; i<LightList.Listâ>count; i++) | |
| { |
| PLight lt=LightList.Get(i); | |
| if(ltâ>active) |
| if(ltâ>object!=NULL) |
| objectLightList.Listâ>AddItems(lt- |
| >getAttachedObjectLightList( )); |
| } | |
| allLightList.Listâ>AddItems(objectLightList.List); |
| for (int ln=0; ln<allLightList.Listâ>count; ln++) | |
| { |
| if (!allLightList.Get(ln)â>UseShadowEffects) continue; | |
| if (!allLightList.Get(ln)â>active) continue; | |
| PLight lt=allLightList.Get(ln); | |
| GlobalIlluminationCalc=false; | |
| miaWriteLog(âCalculating light scattering info:â,s1); | |
| miaClrShowMessageDirectTop(((string)âCalculating light | |
| scattering | |
| info:â)+s1,RGB(203,217,222),0,screenX,screenY,40); |
| // REFER to external rendering engine or to ia internal rendering engine for computing |
| light |
| ltâ>BuildShadowDepthInformation(obj,(iFlags & |
| SHADOW_CUSTOMORIENTED),1.2/coef*coef2)!=0; |
| } | |
| for (int i=0; i<LightList.Listâ>count; i++) | |
| { |
| PLight lt=LightList.Get(i); | |
| if(ltâ>object!=NULL) |
| SetTmpVisible(ltâ>object,true,0); |
| } | |
| pminX = maxint; | |
| pminY = maxint; | |
| pmaxX = âmaxint; | |
| pmaxY = âmaxint; | |
| ClearBitmap( ); | |
| miaWriteLog(âCalculating volume projectionâ); | |
| miaClrShowMessageDirect(âCalculating volume projectionâ,âia AER is |
| activeâ,RGB(203,217,222),0,screenX,screenY+screenY/3); |
| ComputeRotatedVP( ); | |
| incr(RenderNumber,1); | |
| browseObjâ>CalcPlanes(true,true); | |
| GlobalIlluminationCalc=false; | |
| ////////////// here is interpolated rendering of object | |
| /// check for scattering parameter in order to interpolate each light level | |
| for (int ln=0; ln<LightList.Listâ>count; ln++) //disable all light sources |
| LightList.Get(ln)â>Enable(false); |
| QuickSort(objâ>Col,0,objâ>Colâ>count-1); //sort all planes by back Z-order | |
| GlobalLightLayerNumber=1; | |
| for (int ln=0; ln<LightList.Listâ>count; ln++) //render each interpolated light |
| source as separate layer |
| { |
| PLight lt=LightList.Get(ln); | |
| if(ltâ>active) |
| if (ltâ>scattering>=1) | |
| { |
| ltâ>Enable(true); | |
| incr(RenderNumber,1); | |
| objâ>Draw( ); | |
| if (pminX!=maxint) | |
| { |
| GlobalLightLayerNumber++; | |
| if (pminX<0) pminX=0; | |
| if (pmaxX>GetGMX( )) pmaxX=GetGMX( ); | |
| if (pminY<0) pminY=0; | |
| if (pmaxY>GetGMY( )) pmaxY=GetGMY( ); | |
| ActiveLightNum=â1; | |
| miaWriteLog(âInterpolating volume projectionâ); |
| } | |
| ltâ>Enable(false); |
| } |
| } | |
| for (int ln=0; ln<LightList.Listâ>count; ln++) |
| //enable all non-interpolated light sources |
| { |
| PLight lt=LightList.Get(ln); | |
| if(ltâ>active) |
| if (ltâ>scattering<1) | |
| { |
| ltâ>Enable(true); | |
| lightsExists=true; |
| } |
| } | |
| GlobalIlluminationCalc=true; | |
| if (lightsExists) | |
| { |
| SetZBuf( ); | |
| objâ>Draw( ); |
| } | |
| // finally enable all lights | |
| for (int ln=0; ln<LightList.Listâ>count; ln++) //enable all light sources | |
| { |
| PLight lt=LightList.Get(ln); | |
| ltâ>Enable(true); |
| } | |
TRANSFORMING RENDERED VOLUME TO ia AER (VR) MAPS: The task is to generate AER maps from rendered volume. This is necessary to make scene available for viewing outside of ia for viewers such as OpenGL or DirectX. ia supports 3 various types of surfaces. The first 2 types are used for specific cases that will be described below:
Flat object (orientation independent)âfor objects that can be treated as flat. It means that âcenterâ of object has some nearest plane that is âflatâ orientation plane. See, e.g., FIG. 5. The flat object can be also âcurvedâ but with generic look as flat. Rendering: In case the object is âflatâ, it renders only geometrically correct shadows (as projection) with shadows gradient and smoothness parameters simulation parameters. This flat object surface is also used for flat mirror objects, especially for reflection ray-tracing. This is done in order to free up memory and processing for objects that are to be rendered in ia AER.
Faceted object (orientation independent)âfor objects that have âfacetedâ view. In fact ia treats this as a set of âflatâ objects. When faceted objects are included in ia AER, it will be rendered for each polygon from all sides. See, e.g., FIG. 6. This is useful for building shadows on interior walls, where all walls are connected to a single object. It is also useful for rendering columns in the interior or some objects that must be rendered from each side. Rendering: In case the object is âfacetedâ, it renders only geometrically correct shadows to each facet (as projection) while preserving the shadows gradient and smoothness parameters.
ia AER objectâfor any logically understandable objectânot a fragment of some small objectâwill be oriented to ia VR center (light 1) in order to compute the volume projection. An ia AER object is dependent on the position of light 1, but it still contains all of its unique rendering information (shadows, lighting, scattering etc).
In fact in most cases Flat and Faceted understanding of objects as described above are not used. ia AER objects are acceptable for most cases even for flat and faceted cases. Therefore, ia AER saves much more memory and resource usage than all the other available methods.
FIG. 7 shows a generic surface mapped in the present invention. In order to generate AER map for a given surface it's necessary to do the following:
DISPLAYING ia AER (VR) MAPS: AER maps looks like light maps containing RGBA information about each pixel on the surface. However, AER correctly computes only if the original light source is present. The process of merging of original light source and AER maps looks like the following. The formula or render engine used for lighting calculations must be exactly the same as rendered engine used for rendering the volume cube and for transforming the volume into the AER maps.
DISPLAYING OUTPUT VOLUME MATRIX: Output volume matrix is a 3D matrix containing pixel color information for each rendered point of the active volume. The displaying process performs the following steps. If the output volume matrix contains only lighting intensity coefficient then:
EXAMPLES OF REAL-TIME SCENES RENDERED BY is AER: Volume resolution is 1024Ă1024Ă1024. Examples of real-time scenes rendered by the volume cube and displayed by using output volume matrix projected into VR maps are shown in FIGS. 9-12.
OPTIMIZING THE VOLUME BY USING AER CENTER: Defining volume active area is an important task for increasing render speed. There are various methods to finding internal view of the volume. The graph shown in FIG. 13 demonstrates integrated volume shape that defines the active area of the scene. In order to define the optimal active area we must define the possible area of the moving viewpoint. From each possible viewpoint position we must construct a radial shape or HSI (Half Spaces Intersection, see below) shape and calculate surface area of the constructed radial shape. Squares 2 show an active area where integrated radial shapes are attached to the objects in the scene. Line 4 shows radial shape constructed inside the volume from the given viewpoint position. Point 6 defines viewpoint position. Rectangle 8 shows all the possible viewpoint positions.
Because we do not have actual viewpoint in the volume, we will use AER center in order to define optimal active volume.
So we have the following optimization task:
The next stage is moving the viewpoint to all possible positions defined by the scene properties and constructing an integrated radial shape that shows how the active area changes.
RADIAL FUNCTION INSIDE THE VOLUME: The Radial Function can return more than one value for non-convex shapes. The âtrue valueâ of Radial Function is the minimum of all valuesâlike in the case of 2D. In our is the polygons (convex and non-convex) have facets that are considered as a union of triangles. We perform the calculation of Radial Function in the following steps:
Checking of intersection point towards the facet (step 3) is an interesting aspect to be considered here. For a convex facet the checking is realized as follows: Connect the intersection point with the vertices of the facet and get a list of sequentially placed vectors. Get sum of vector multiplication of all two adjacent vectors (one can state that this sum is twice the area of the facet). If sum/2 is equal to the facet area then the point is inside the facet. FIG. 14 shows this process. FIG. 14(a) shows the intersection point inside while FIG. 14(b) shows the intersection point outside or non-convex facets is it necessary to subdivide the facet into triangles and repeat the procedure of checking for each triangle.
HALF-SPACE INTERSECTION CALCULATION: If HSI is a finite shape the algorithm gives vertices of the shape. In the case of infinite region the algorithms gives vertices and border planes. The algorithm accelerates the calculation 5-6 times if the half-planes are sorted by rotating vector. As distinct from 2D, the sorting of half-spaces in 3D does not lead to any improvement in computational speed. In the case of 2D, a priority is considered that a line intersects HPI at two points at most. In the case of 3D we can safely consider that an intersection of HSI and a planeâthe intersectionâwill have a set of lines. Obviously, the number of lines is varied.
Below we give the rules that are used in the procedure of the algorithm.
Cutting an HSI by a new plane (with direction corresponding to the half-space) we get a new facetâintersection of the HSI and the new plane. This new facet can be finite or infinite. To analyze this new facet one has to find those other facets of a given HSI that intersect the plane of the new facet. Let those other facets be considered as cutting facets. The half-spaces of the cutting facets can be projected on the new plane, as a result we will get the half-planes list on the given plane. After getting the half-planes list we should compute the HPI figure on the new plane, as a result new facet (finite or infinite) is found (see FIG. 16). FIG. 16 also shows an optimization process for the volume, the resulting graph displays how the volume is changed. The figure displayed is the scene bounding shape. The figure inside is the HSI shape defining active area of the volume from the AER center.
SAVING RENDERED VOLUME CUBE: Saving render volume cube allows saving disk space.
ADAPTIVE 3D COMPRESSION: In conjunction with and as a part of ia AER to reach a global understanding of any given 3D environment, ia also employs its Adaptive 3D Compression engine. The major aspects of this engine are:
The Adaptive 3D Compression method performs strong analysis of entry scene and finds the following factors:
INPUT DATA FOR ADAPTIVE 3D COMPRESSION: 3D scenes in computer graphics not only store models (objects), but it also contains sets of textures and/or light maps. So the Adaptive 3D Compression method suggested by us, is designed to fully include all 3D space informationâvector graphics and textures located on objects. The method of data compression, which is based on analyzing incoming data as a 3D virtual space description or data, may be interpreted as follows: 3D Scene
2D Scene
Any given 3D scene however has a logical structure, where each object may have its sub-objects. However, the 3D compression of the present invention is a method of analyzing this logical structure to reproduce it in a compressed state. The diagram of FIG. 18 discloses this logical structure.
METHOD OF ADAPTIVE 3D COMPRESSION: is Adaptive 3D Compression method is based on both object recognition methodology and on object compression methodology. Definitions:
Recognition of 3D object based on the following:
ia HARDWARE ACCELERATOR: As part of ia AER a final component is the ia Hardware Accelerator. Video cards and other hardware solutions that allow increasing speed of rendering are based on integrated algorithms that are interpreted directly by processors inside the hardware. In fact, each accelerator is a computer with integrated algorithm, which implements calculations on hardware level. This means that each hardware-based acceleration is dependent on algorithm and the solution available on the hardware platform. This however does not provide a universal solution and therefore there is always a degree of dependency from the hardware (video card) manufacturers.
In order to initiate a comprehensive and working solution that is independent of hardware, ia has set to use common hardware objectives. Any given hardware has specific objectives, and the final objective of any video hardware is visualization. So, common parameter of any video or visualization hardware is âshowing an imageâ on some output device. We do not delve into HOW an image is shown, but any visualization hardware ultimately shows an image. Even printing system is also a system that shows an image on paper. So when speaking about visualization hardware we including in it video cards, printers, projectors and all other hardware that receives some digital input in order to produce an output image.
In order to make an independent solution, we are using software that uses only minimal common objective of any visualization hardware, which is âshowing an imageâ. Images are constructed by various independent ways and means, outside of the hardware and integrated hardware algorithms are NOT used.
ia Hardware Accelerator uses maximum output speed of any given hardware. ia Hardware Accelerator is a method, which utilizes and employs the maximum speed of the video card installed on the host computer in order to show the 3D static scene, without using any additional hardware calculations. Again, this is based on calculations performed by software algorithm, which is external, however visualization of a result is hardware based, and there is no dependency from hardware algorithm, because we are using minimal common objective of the hardware.
The process is divided into the following parts: (External Independent Algorithm computes initially a single time)
The next stage is the static 3D scene and defining the matrix for transforming the view to a given camera or viewpoint and send the simple graphical data lineal list to the hardware. Because the hardware does not perform any calculations except simply showing the simple data, it uses its maximum speed for visualization. In fact, what we end up with is a graphical card accelerated image, but having the volume of the image computed outside of the graphical card.
ia Hardware Accelerator Layers or MULTI SGLD. 3D scene can be defined into different Layers or Zones, where each zone can be computed with a separate Turbo Amplifier SGLD.
Because visualization of each SGLD uses transformation matrix, it means that different zones can be rotated or scaled or transformed by the matrix in other ways. This allows adding more dynamic objects in SGLD, which is in fact, are purely static computed data.
The diagram of FIG. 20 demonstrates the concept including parts that show the classical approach.
Changes and modifications to the embodiments chosen and described for purposes of illustration will readily occur to those skilled in the art. To the extent such modifications and variations do not depart from the spirit of the invention, they are intended to be included within the scope. The scope of the invention must be assessed only by a fair interpretation of the following claims.
1. A method of creating an interactive atmosphere active environmental rendered 2D video representation of a 3D scene, comprising the steps of:
a. accessing data representing a 3D environment from a 3D perspective;
b. calculating a 2D video representation utilizing volumes from the entire 3D environment by;
i. creating a single 3D output matrix with no light-map; and
ii. changing the output matrix.