CN108573524B - Interactive real-time free stereo display method based on rendering pipeline - Google Patents
Interactive real-time free stereo display method based on rendering pipeline Download PDFInfo
- Publication number
- CN108573524B CN108573524B CN201810330487.8A CN201810330487A CN108573524B CN 108573524 B CN108573524 B CN 108573524B CN 201810330487 A CN201810330487 A CN 201810330487A CN 108573524 B CN108573524 B CN 108573524B
- Authority
- CN
- China
- Prior art keywords
- texture
- rendering
- scene
- pixel
- rendering pipeline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/55—Radiosity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
The invention provides an interactive real-time free three-dimensional display method based on a rendering pipeline, which comprises the steps of reading in vertex data of a model to be rendered, generating a grid model by utilizing the vertex data, obtaining a simplified grid model, and transmitting the simplified grid model into an OpenGL rendering pipeline; generating a single-viewpoint rendering scene graph; setting the resolution of a rendering window, the material of a target surface, the type and the position of a light source, and respectively implementing scene rendering aiming at scenes with different viewpoints by utilizing an OpenInventor open source library; a pixel fusion algorithm for fusing texture buffering of scenes with different viewpoints to obtain a fused image for output; utilizing OpenGL programmable rendering pipeline characteristics, using GLSLshader language, completing pixel selection and fusion operation in a fragment shader, and finally outputting a fused result; a user interaction interface is implemented. The method realizes three-dimensional display of three-dimensional data through multi-view fusion; the rendering of the scene at each viewpoint is completed by utilizing a multi-texture mapping technology, and the requirement of a user for carrying out real-time interactive observation on an observed object is met.
Description
Technical Field
The invention relates to an interactive real-time free three-dimensional display method based on a rendering pipeline.
Background
Compared with the traditional two-dimensional plane display, the stereo display can provide the visual perception of a viewer closer to the real world, and the free stereo display technology utilizes the parallax principle of human eyes, so that the left eye and the right eye can see two pictures with parallax and different images from a viewing screen without any tool, and the two pictures are reflected to the brain, so that the human body can generate the stereo perception. The stereoscopic display technology gets rid of the restriction of vision-aid equipment and becomes a research hotspot in the field of current stereoscopic display. With the continuous development of stereoscopic display technology, various technologies have been available for implementing stereoscopic display.
The free stereo display technology based on the lenticular lens needs to draw the same scene from a large number of visual angles, and has high requirements on rendering speed and large data volume analysis and processing speed. At present, an autostereoscopic display system on the world often cannot refresh in real time according to an interactive instruction of a user, and off-line manufactured video materials are adopted; that is, each frame of image is processed in advance, and the multi-frame images with selected pixels and fused are finally synthesized into a video and finally played on the autostereoscopic display device. The scheme has the limitations that the operation is complicated, the played content cannot be changed in real time and the like.
Disclosure of Invention
The invention aims to provide an interactive real-time free three-dimensional display method based on a rendering pipeline, which realizes naked-eye 3D display effect by drawing and imaging the input data and by using an inclined cylindrical lens free three-dimensional display device, realizes real-time interactive free three-dimensional display based on OpenGL programmable rendering pipeline development, performs operations such as translation, rotation and zooming on target data according to an interactive instruction of a user, can refresh and draw in real time, and solves the problems of the prior art that the operation is complicated, the playing content cannot be changed in real time and the like.
The technical solution of the invention is as follows:
an interactive real-time auto-stereoscopic display method based on a rendering pipeline comprises the following steps,
s1, reading in vertex data of a model to be rendered, generating a grid model by utilizing the vertex data, simplifying the grid by utilizing a Laplace smoothing algorithm to obtain a simplified grid model, and transmitting the simplified grid model into an OpenGL rendering pipeline;
s2, setting the number of viewpoints and the positions of virtual cameras according to a using scene, specifically, setting the number of viewpoints of a fused image as N and viewpoint interval angle deltas, calling an OpenGL API gluLookAt function and a gluPerctive function, placing N virtual cameras on an arc with an origin as a central point and a radius as R according to the number of viewpoints and N and each interval angle delta, enabling a virtual camera array to be xoz-plane symmetric, wherein the optical axis of each virtual camera is a direction vector determined from the position to the origin, the normal direction of each virtual camera is the positive direction of a coordinate axis z, and for each virtual camera, using an OpenGL fixed pipeline to render the simplified grid model in the step S1 to generate a single viewpoint rendering scene graph.
S3, setting resolution of a rendering window, material of a target surface, type and position of a light source, and respectively implementing scene rendering aiming at scenes with different viewpoints by utilizing an OpenInventor open source library, specifically, calling OpenGL API, opening up a data space PixBufferi, namely a texture array in a video memory by using three functions of glGenBuffers, glBindBuffer and glBufferData, and recording the number of transverse pixels of a screen as XwThe number of vertical pixels is YwThen each block area occupies a size of Xw×YwX 3 bits, utilizing Render To Texture technology, adding the color buffer in the frame buffer of the single-angle rendering scene graph generated by using the fixed pipeline To the corresponding Texture buffer object, calling the glframebuffer Texture2D function To save the rendering result into the video memory in a Texture form;
s4, the pixel fusion algorithm for fusing the different viewpoint scene texture buffers in step S3 is specifically described as follows: traversing all pixels in the screen area according to the mapping formulaSelecting pixel channels from the images at different viewpoints, wherein the quotient of i/3 represents the pixel abscissa, ranging from 0 to Xw-1; j represents the ordinate of the pixel, which ranges from 0 to Yw-1; when the remainder of i/3 is 0, 1 and 2, the blue, green and red channels respectively correspond to the pixel (i/3, j), X is the number of sub-pixels which can be covered under the width of a single cylindrical lens on the liquid crystal display screen, alpha is the included angle radian between the tilt lens and the vertical direction, N is the number of viewpoints S2, and the result N is calculatedkNumbering the scene texture corresponding to the current sub-pixel; according to NkObtaining pixel channel values from the rendering scene graph of the corresponding viewpoint, and obtaining a fused image for output after all pixels are traversed;
s5, implementing a pixel fusion algorithm in a fragment shader using the GLSLshader language with the OpenGL programmable rendering pipeline characteristics, and performing buffer fusion on the single-view scene texture at S3 to generate a final screen output image, specifically, introducing an uniform variable into the fragment shader to represent values a and X in a mapping formula, and calculating a scene texture buffer number corresponding to a pixel channel value at a corresponding coordinate according to the mapping formula at S4; calling a sampling function texture2D built in the shader language through the sampler, selecting a color value of a corresponding texture position according to the calculated viewpoint index value, and fusing and generating a final color value of a fragment position, so as to generate each frame image with a naked eye 3D effect;
s6, realizing user interactive interface, self-defining message callback function, and processing the message sent by keyboard and mouse during interaction to respond the interactive request from user.
Further, in step S1, the laplacian smoothing algorithm is used to implement the smoothing operation of the simplified mesh structure, specifically:
s11, initializing a neighboring structure set M of the grid;
s12, creating a temporary point setUsed for storing the positions of all points in the set M after smoothing;
s13, initializing the temporary vector as a zero vector V for the vertex V in all the grids0Then, the neighborhood point set P adj (P) is taken, and the positions of all the neighborhood points T are added to the temporary vector VtFinally, the temporary vector V is addedtPosition of (2) is stored in a temporary set of pointsPerforming the following steps;
s14, modifying the position of P to a temporary point set for the top point P in all the gridsTo the corresponding position in (a).
Further, in step S2, the viewpoint interval angle delta is calculated from a formula in which the optimal viewing distance dis is a parameter, and delta is sin (0.2/dis) m.
Further, in step S4, the specific method for accessing the texture buffer of the single-view scene in step S3 is: writing a fragment shader program, declaring a sampler2D array in the shader, setting the size of the array to the previous view number N, accessing the scene texture buffer in step S3 through each element in the array in the shader program, and accessing the fragment shader through a gl _ fragment coord variable.
Further, the real-time generation of the naked eye 3D effect image in step S5 includes the following steps:
s51, adopting the technology of drawing the images at different viewpoints to the texture during each refreshing, and outputting the color buffer RenderBuffer in the frame buffer to the corresponding texture object TextureBuffer and storing the texture object TextureBuffer in the video memory;
s52, rewriting a fragment shader in the rendering pipeline, numbering the texture object by texture unit TextureUnit, transmitting a uinform variable to the color device at the client to represent the texture unit where the texture object is located, and accessing the specified texture object by the fragment shader according to the handle;
s53, selecting pixels through a texture sampling function texture2d () built in a texture Sampler and glsl according to a sub-pixel mapping formula, and combining the pixels into pixels at the corresponding coordinates of the screen;
s54, substituting the two-dimensional coordinates of the point in the screen coordinate system, namely the built-in variable gl _ FragCoord in the shader language into the formula to obtain the index corresponding to which image, then accessing the color information of the texture object of the image corresponding to the viewpoint at the position corresponding to the two-dimensional coordinates, and finally calculating the output value of the fragment;
s55, building a quadrangle to cover the whole screen, and then the pixel points output by the fragment shader are adapted to the whole screen, and the pixel data output by the fragment shader at the moment is the required data and is directly output through the rendering pipeline.
Further, in step S6, specifically,
s61, declaring and defining callback function InventMotionCallback as message callback function of SoWinExaminerViewer component, calling setEventCallback function to complete the registration of callback function number in SoWinExaminerViewer class.
S62, processing work of Windows window messages is completed in the InventMotionCallback function definition, and a scene is refreshed according to messages generated during user interaction so as to complete response to the interaction.
Further, in step S62, specifically,
s621, generating a mouse sliding message WM _ MOUSE when a user presses a left mouse button to drag, mapping the change of a two-dimensional screen coordinate into a three-dimensional coordinate system, realizing virtual trackball, completing rotation and movement transformation of an object in each sub-scene, re-rendering each sub-scene after transformation into a corresponding texture object, calling a re-rendering function, executing a pixel selection fusion algorithm aiming at a new texture object by a fragment shader in a rendering pipeline, generating new output data, and completing refreshing and displaying of a result after interaction;
s622, when a user rotates a roller in the middle of a mouse, a mouse roller moving message WM _ MOUSE WHEEL is generated, forward and reverse rotation angles of the mouse roller are mapped into a three-dimensional coordinate system, translation of an object in a scene along the Z-axis direction is generated, meanwhile, each transformed sub-scene is re-rendered into a corresponding texture object, a re-rendering function is called, a fragment shader in a rendering pipeline executes a pixel selection fusion algorithm for the new texture object, new output data is generated, refreshing and displaying of a result after interaction are completed, and scaling of the object in the scene is completed;
and S623, generating corresponding key messages when the user presses corresponding keys of the keyboard, and finishing the real-time adjustment of parameters and the redrawing of scenes according to different key messages.
The invention has the beneficial effects that: the interactive real-time free three-dimensional display method based on the rendering pipeline is developed aiming at an inclined cylindrical lens free three-dimensional display system based on a programmable rendering pipeline technology, and three-dimensional display of three-dimensional data is realized through multi-view fusion; the rendering of the scene at each viewpoint is completed by utilizing a multi-texture mapping technology, and the requirement of a user for carrying out real-time interactive observation on an observed object is met.
Drawings
FIG. 1 is a flow chart of an interactive real-time autostereoscopic display method based on a rendering pipeline according to an embodiment of the present invention;
fig. 2 is a schematic view of the light transmission characteristics of the lenticular lens unit in the embodiment of the present invention.
Fig. 3 is a schematic view of the distribution of viewpoints in an autostereoscopic display panel with tilted lenses according to an embodiment.
Fig. 4 is a schematic view of a viewpoint pixel mapping relationship in an embodiment.
Detailed Description
Preferred embodiments of the present invention will be described in detail below with reference to the accompanying drawings.
Examples
The interactive real-time free three-dimensional display method based on the rendering pipeline comprises the steps of reading vertex data of a model needing rendering, and transmitting the vertex data into an OpenGL rendering pipeline in a vertex array mode; setting the number of viewpoints and the position of a virtual camera according to a use scene; setting the resolution of a rendering window, the material of a target surface, the type and the position of a light source, and respectively implementing scene rendering aiming at scenes with different viewpoints by utilizing an OpenInventor open source library; rendering and outputting the scene to the texture video memory by using the interface drawn to the texture video memory; utilizing OpenGL programmable rendering pipeline characteristics, using GLSLshader language, completing pixel selection and fusion operation in a fragment shader, and finally outputting a fused result; a user interaction interface is implemented. The method realizes the three-dimensional display of three-dimensional data through multi-view fusion; the rendering of the scene at each viewpoint is completed by utilizing a multi-texture mapping technology, and the requirement of a user for carrying out real-time interactive observation on an observed object is met.
An interactive real-time autostereoscopic display method based on rendering pipeline, as shown in fig. 1, includes the following steps:
and S1, reading in vertex data of the model to be rendered, generating a grid model by utilizing the vertex data, simplifying the grid by utilizing a Laplace smoothing algorithm to obtain a simplified grid model, and transmitting the simplified grid model into an OpenGL rendering pipeline.
In step S1, a laplacian smoothing algorithm is used to implement the simplified smoothing operation of the mesh structure, specifically:
s11, initializing a neighboring structure set M of the grid;
s12, creating a temporary point setUsed for storing the positions of all points in the set M after smoothing;
s13, initializing the temporary vector as a zero vector V for the vertex V in all the grids0Then, the neighborhood point set P adj (P) is taken, and the positions of all the neighborhood points T are added to the temporary vector VtInner (temporary vector/═ field point set), and finally, the temporary vector VtPosition of (2) is stored in a temporary set of pointsPerforming the following steps;
s14, modifying the position of P to a temporary point set for the top point P in all the gridsTo the corresponding position in (a).
S2, setting the number of viewpoints and the positions of virtual cameras according to a using scene, specifically, setting the number of viewpoints of a fused image as N and viewpoint interval angle deltas, calling an OpenGL API gluLookAt function and a gluPerctive function, placing N virtual cameras on an arc with an origin as a central point and a radius as R according to the number of viewpoints and N and each interval angle delta, enabling a virtual camera array to be xoz-plane symmetric, wherein the optical axis of each virtual camera is a direction vector determined from the position to the origin, the normal direction of each virtual camera is the positive direction of a coordinate axis z, and for each virtual camera, using an OpenGL fixed pipeline to render the simplified grid model in the step S1 to generate a single viewpoint rendering scene graph.
In step S2, the viewpoint interval angle delta is calculated according to the formula with the optimal viewing distance dis as a parameter, and delta is sin (0.2/dis), where dis is expressed in meters.
S3, calling OpenGL API, opening up a data space PixBufferi (texture array) in a video memory by using three functions of glGenBuffers, glBindBuffer and glBufferData, and recording the number of horizontal pixels of a screen as XwThe number of vertical pixels is YwThen each block area occupies a size of Xw×YwThe x 3 bits, by using Render To Texture technology, the color buffer in the frame buffer of the single-angle rendering scene graph generated by using the fixed pipeline is attached To the corresponding Texture buffer object, the glframebuffer Texture2D is called To store the rendering result in the video memory in the form of Texture, and it is noted that a Texture unit needs To be specified during each operation, specifically, glActiveTexture is called, so that the Texture of the rendering result corresponding To the view angle is conveniently marked, and can be accessed in the subsequent shaders.
The embodiment uses the grating type autostereoscopic display technology to realize the autostereoscopic display of the medical data, and the technology separates different parallax images on the space through the light splitting characteristic of the grating so as to enable a viewer to feel stereoscopic impression. As shown in fig. 2, F and F' are the first focal point and the second focal point of the cylindrical lens unit, and the focal length of the lens is set to F. Setting a point with a distance g between the rear of the cylindrical lens and the lens and a distance h between the rear of the cylindrical lens and the optical axisAIs imaged on a point through a lensB. DotBThe distance between the vertex of the convex surface of the lens and the optical axis is l, and the distance between the vertex of the convex surface of the lens and the optical axis is w, and the distance can be obtained according to the geometrical relationship:the lateral magnification of the lens is then:
the autostereoscopic display in this embodiment establishes the relationship between the height h of the object point from the optical axis and the eye position (l, w) by the above formula. The sub-pixels in the display are imaged at the same area at the viewing position (the best viewing position for the viewpoint image) after passing through their corresponding lenses. The slanted lenticular autostereoscopic display in this embodiment enables the human eye to see the stereoscopic display effect at the best viewing position, as shown in fig. 3.
The concrete implementation steps are as follows:
s31, fixing the interval angle and the total number of viewpoints, and sequentially rendering to generate images at the corresponding viewpoints;
s32, substituting the corresponding parameters into the pixel mapping formula according to the coordinates of the pixel, and calculating the result NkFrom the NthkSelecting pixels at corresponding coordinates in the images of the viewpoints;
and S33, placing the image formed by all the selected pixels into a buffer area where the screen is located.
S4, the pixel fusion algorithm for fusing the different viewpoint scene texture buffers in step S3 is specifically described as follows: traversing all pixels in the screen area according to the mapping formulaSelecting pixel channels from the images at different viewpoints, wherein the quotient of i/3 represents the pixel abscissa, ranging from 0 to Xw-1; j represents the ordinate of the pixel, which ranges from 0 to Yw-1; when the remainder of i/3 is 0, 1 and 2, the blue, green and red channels respectively correspond to the pixel (i/3, j), X is the number of sub-pixels which can be covered under the width of a single cylindrical lens on the liquid crystal display screen, alpha is the included angle radian between the tilt lens and the vertical direction, N is the number of viewpoints S2, and the result N is calculatedkNumbering the scene texture corresponding to the current sub-pixel; according to NkAnd obtaining pixel channel values from the rendering scene graph of the corresponding viewpoint, and obtaining the fused image for output after all pixels are traversed.
In this example, the specific method for accessing the texture buffer of the single-view scene in step S3 is as follows: writing a fragment shader program, declaring a sampler2D array in the shader, setting the size of the array to the previous view number N, accessing the scene texture buffer in step S3 through each element in the array in the shader program, and accessing the fragment shader through the gl _ fragment coord variable.
With xoffRepresenting the horizontal distance of the RGB sub-pixel (x, y) from the edge of the lens. FIG. 4 is a diagram of a 9-view display sub-pixel mapping table calculated according to a mapping formula.
S5, utilizing OpenGL programmable rendering pipeline characteristics, using GLSLshader language, realizing a pixel fusion algorithm in a fragment shader, and carrying out buffer fusion on the single-viewpoint scene texture in S3 to generate a final screen output image, specifically: introducing uniform variables into the fragment shader to represent values alpha and X in a mapping formula, calculating scene texture buffer numbers corresponding to pixel channel values at corresponding coordinates according to the mapping formula S4, passing through the sampler, calling a shader language built-in sampling function texture2D, selecting color values at corresponding textures according to the calculated viewpoint index values, and fusing to generate final color values at the fragment, thereby generating each frame image with naked eye 3D effect.
The real-time generation of the naked eye 3D effect image in the embodiment comprises the following specific implementation steps:
s51, adopting the technique of drawing to Texture (RTT) for the images at different viewpoints during each refreshing, and outputting the color buffer RenderBuffer in the frame buffer to the Texture object TextureBuffer corresponding to the Texture object and storing in the video memory;
s52, rewriting a fragment shader in the rendering pipeline, numbering the texture object by texture unit TextureUnit, and introducing a uinform variable (shaping array) to the color device at the client to represent the texture unit where the texture object is located, wherein the fragment shader can access the specified texture object according to the handle;
s53, selecting pixels through texture sampling functions texture2d () built in texture samplers Sampler and glsl according to the sub-pixel mapping formula and combining the pixels into pixels at the corresponding coordinates of the screen;
s54, substituting the two-dimensional coordinates (built-in variables gl _ FragCoord in shader language) of the points in the screen coordinate system into the formula to obtain the index corresponding to which image, then accessing the color information of the texture object of the image corresponding to the viewpoint at the position corresponding to the two-dimensional coordinates, and finally calculating the output value of the fragment;
s55, building a quadrangle covering the whole screen, the pixel points output by the fragment shader can be adapted to the whole screen. The pixel data output by the fragment shader at the moment is the required data, and the pixel data are directly output through the rendering pipeline, so that the bandwidth of the video memory and the memory is not occupied, and the real-time requirement is met.
S6, self-defining a message callback function, and performing corresponding processing on the message sent by the keyboard and the mouse during interaction so as to respond to the interaction request from the user. Such as rotation, translation, magnification, reduction, and so forth. The specific steps of how to complete the user interaction function are as follows:
s61, declaring and defining callback function InventorMotionCallback as SoWin
The message of the ExwinerViewer component calls back a function, and the setEventCallback function is called to complete the registration of the callback function in the SoWinExaminerViewer class.
S62, processing work of Windows window messages is completed in the InventMotionCallback function definition, and a scene is refreshed according to messages generated during user interaction so as to complete response to the interaction. The specific interaction and response are described in detail below:
s63, when a user presses a left mouse button to drag, a mouse sliding message WM _ MOUSEMOVE is generated, at this time, the corresponding processing module is skipped, the change of the two-dimensional screen coordinate is mapped into the three-dimensional coordinate system, the virtual trackball is realized, the rotation and the movement transformation of the object in each sub-scene are completed, meanwhile, each transformed sub-scene is re-rendered into the corresponding texture object, the re-rendering function is called, the fragment shader in the rendering pipeline executes the pixel selection fusion algorithm aiming at the new texture object, new output data is generated, and the refreshing display of the result after the interaction is completed.
S64, when the user rotates the wheel in the middle of the mouse, it will generate the mouse wheel moving message WM _ MOUSE WHEEL, at this time, it will jump to the corresponding processing module. The method comprises the steps of mapping forward rotation angles and reverse rotation angles of a mouse roller to a three-dimensional coordinate system, generating translation of objects in scenes along the Z-axis direction, re-rendering each sub-scene after transformation to a corresponding texture object, calling a re-drawing function, executing a pixel selection fusion algorithm for a new texture object by a fragment shader in a rendering pipeline, generating new output data, finishing refreshing and displaying interactive results, and finishing zooming of the objects in the scenes.
And S65, when the user presses the corresponding key of the keyboard, generating a corresponding key message, and jumping to the corresponding processing module. And finishing the real-time adjustment of the parameters and the redrawing of the scene aiming at different key messages.
The embodiment respectively sends different pictures to the left eye and the right eye of a viewer, thereby achieving the stereoscopic visual effect. The embodiment inputs the multi-view scene target into the texture video memory by using a rendering-to-texture technology; the multi-view pixel selection and fusion operation is realized in a pipeline by utilizing the OpenGL programmable pipeline characteristic so as to achieve the purpose of real-time rendering. The embodiment adopts a method of modifying an OpenGL programmable rendering pipeline and adding a related algorithm into a shader for real-time execution to optimize a data path, fully utilizes the high concurrency characteristic of the graphics card on the computing hardware, completes the whole process of data processing at the graphics card end, and has no time delay of data transmission, thereby realizing real-time interaction.
The interactive real-time free three-dimensional display method based on the rendering pipeline is developed aiming at the inclined cylindrical lens free three-dimensional display embodiment based on the programmable rendering pipeline technology, and realizes the three-dimensional display of three-dimensional data through multi-view fusion; the rendering of the scene at each viewpoint is completed by utilizing a multi-texture mapping technology, and the requirement of a user for carrying out real-time interactive observation on an observed object is met.
Claims (7)
1. An interactive real-time auto-stereoscopic display method based on rendering pipeline is characterized in that: comprises the following steps of (a) carrying out,
s1, reading in vertex data of a model to be rendered, generating a grid model by utilizing the vertex data, simplifying the grid by utilizing a Laplace smoothing algorithm to obtain a simplified grid model, and transmitting the simplified grid model into an OpenGL rendering pipeline;
s2, setting the number of viewpoints and the positions of virtual cameras according to a using scene, specifically, setting the number of viewpoints of a fused image as N and viewpoint interval angle deltas, calling an OpenGL API gluLookAt function and a gluPerctive function, placing N virtual cameras on an arc which takes an original point as a central point and has a radius of R according to the number of viewpoints N and the interval angle deltas, enabling a virtual camera array to be symmetrical with a xoz plane, wherein the optical axis of each virtual camera is a direction vector determined from the position to the original point, the normal direction of each virtual camera is the positive direction of a coordinate axis z, and using an OpenGL fixed pipeline to render the simplified grid model in the step S1 for each virtual camera to generate a single viewpoint rendering scene graph;
s3, setting the resolution of a rendering window, the material of a target surface, the type and the position of a light source, and respectively implementing scene rendering aiming at scenes with different viewpoints by utilizing an OpenInventor open source library, specifically, calling OpenGL API and opening up a data space PixBuffer in a video memory by using three functions of glGenBuffers, glBindBuffer and glBufferdataiI.e. texture array, and the number of horizontal pixels on the screen is recorded as XwThe number of vertical pixels is YwThen each block area occupies a size of Xw×YwAdding a color buffer area in a frame buffer area of the single-view rendering scene graph in the step S2 to a corresponding texture buffer area object, calling a glFramebuffer texture2D function to store a rendering result in a display memory in a texture form, and obtaining single-view scene texture buffer;
s4, describing the pixel fusion algorithm for fusing the different viewpoint scene texture buffers in step S3 specifically as follows: traversing all pixels in the screen area according to the mapping formulaSelecting pixel channels from the images at different viewpoints, wherein the quotient of i/3 represents the pixel abscissa, ranging from 0 to Xw-1; j represents the ordinate of the pixel, which ranges from 0 to Yw-1; the remainder of i/3 is 0, 1, 2 respectively corresponding to blue, green, red channels of pixel (i/3, j), and X is the width of a single cylindrical lens on the LCD screenThe number of sub-pixels which can be covered, alpha is the included angle radian between the tilt lens and the vertical direction, N is the number of the viewpoints S2, and the calculation result N iskNumbering the scene texture corresponding to the current sub-pixel; according to NkObtaining pixel channel values from the rendering scene graph of the corresponding viewpoint, and obtaining a fusion image for output after all pixels are traversed;
s5, implementing a pixel fusion algorithm in the fragment shader by using the programmable rendering pipeline feature of OpenGL and using GLSLshader language, and performing buffer fusion on the single-view scene texture in step S3 to generate a final screen output image, specifically, introducing an uniform variable into the fragment shader to represent values a and X in a mapping formula, and calculating a scene texture buffer number corresponding to a pixel channel value at a corresponding coordinate according to the mapping formula in step S4; calling a sampling function texture2D built in the shader language through a sampler, selecting a color value of a corresponding texture position according to the calculated viewpoint index value, and fusing and generating a final color value of a fragment position, so as to generate each frame image with a naked eye 3D effect;
s6, realizing user interactive interface, self-defining message callback function, and processing the message sent by keyboard and mouse during interaction to respond the interactive request from user.
2. The rendering pipeline-based interactive real-time autostereoscopic display method according to claim 1, characterized by: in step S1, a simplified mesh model is obtained by using a laplacian smoothing algorithm, which specifically includes:
s11, initializing a neighboring structure set M of the grid;
s12, creating a temporary point setUsed for storing the positions of all points in the set M after smoothing;
s13, initializing the temporary vector as a zero vector V for the vertex V in all the grids0Then, the neighborhood point set P adj (P) is taken, and the positions of all the neighborhood points T are added to the temporary vector VtInterior, the most importantThe post-temporal vector VtPosition of (2) is stored in a temporary set of pointsPerforming the following steps;
3. The rendering pipeline-based interactive real-time autostereoscopic display method according to claim 1, characterized by: in step S2, the viewpoint interval angle delta is calculated from a formula in which the optimal viewing distance dis is a parameter, and delta is sin (0.2/dis).
4. The rendering pipeline-based interactive real-time autostereoscopic display method according to claim 1, characterized by: in step S4, the specific method for accessing the texture buffer of the single-view scene in step S3 is: writing a fragment shader program, declaring a sampler2D array in the shader, setting the size of the array to the previous view number N, accessing the scene texture buffer in step S3 through each element in the array in the shader program, and accessing the fragment shader through a gl _ fragment coord variable.
5. The rendering pipeline based interactive real-time autostereoscopic display method according to any of claims 1 to 3, characterized by: the real-time generation of the naked eye 3D effect image in step S5 is specifically implemented as follows:
s51, adopting the technology of drawing the images at different viewpoints to the texture during each refreshing, and outputting the color buffer area RenderBuffer in the frame buffer to the corresponding texture object TextureBuffer and storing the texture object TextureBuffer in the video memory;
s52, rewriting a fragment shader in the rendering pipeline, numbering the texture object by texture unit TextureUnit, transmitting a uinform variable to the color device at the client to represent the texture unit where the texture object is located, and accessing the specified texture object by the fragment shader according to the handle;
s53, selecting pixels through a texture sampling function texture2d () built in a texture Sampler and glsl according to a sub-pixel mapping formula, and combining the pixels into pixels at the corresponding coordinates of the screen;
s54, substituting the two-dimensional coordinates of the point in the screen coordinate system, namely the built-in variable gl _ FragCoord in the shader language into the formula to obtain the index corresponding to which image, then accessing the color information of the texture object of the image corresponding to the viewpoint at the position corresponding to the two-dimensional coordinates, and finally calculating the output value of the fragment;
s55, building a quadrangle to cover the whole screen, and then the pixel points output by the fragment shader are adapted to the whole screen, and the pixel data output by the fragment shader at the moment is the required data and is directly output through the rendering pipeline.
6. The rendering pipeline-based interactive real-time autostereoscopic display method according to claim 1, characterized by: in step S6, specifically, the step,
s61, firstly declaring and defining a callback function InventMotionCallback as a message callback function of the SoWinExaminerViewer component, and calling a setEventCallback function to complete the registration of the callback function in the SoWinExaminerViewer class;
s62, processing work of Windows window messages is completed in the InventMotionCallback function definition, and a scene is refreshed according to messages generated during user interaction so as to complete response to the interaction.
7. The rendering pipeline-based interactive real-time autostereoscopic display method according to claim 6, characterized by: in step S62, specifically, the step,
s621, generating a mouse sliding message WM _ MOUSE when a user presses a left mouse button to drag, mapping the change of a two-dimensional screen coordinate into a three-dimensional coordinate system, realizing virtual trackball, completing rotation and movement transformation of an object in each sub-scene, re-rendering each sub-scene after transformation into a corresponding texture object, calling a re-rendering function, executing a pixel selection fusion algorithm aiming at a new texture object by a fragment shader in a rendering pipeline, generating new output data, and completing refreshing and displaying of a result after interaction;
s622, when a user rotates a roller in the middle of a mouse, a mouse roller moving message WM _ MOUSE WHEEL is generated, forward and reverse rotation angles of the mouse roller are mapped into a three-dimensional coordinate system, translation of an object in a scene along the Z-axis direction is generated, meanwhile, each transformed sub-scene is re-rendered into a corresponding texture object, a re-rendering function is called, a fragment shader in a rendering pipeline executes a pixel selection fusion algorithm aiming at the new texture object, new output data is generated, refreshing and displaying of a result after interaction are completed, and scaling of the object in the scene is completed;
and S623, generating corresponding key messages when the user presses corresponding keys of the keyboard, and finishing the real-time adjustment of parameters and the redrawing of scenes according to different key messages.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810330487.8A CN108573524B (en) | 2018-04-12 | 2018-04-12 | Interactive real-time free stereo display method based on rendering pipeline |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810330487.8A CN108573524B (en) | 2018-04-12 | 2018-04-12 | Interactive real-time free stereo display method based on rendering pipeline |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108573524A CN108573524A (en) | 2018-09-25 |
CN108573524B true CN108573524B (en) | 2022-02-08 |
Family
ID=63574773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810330487.8A Active CN108573524B (en) | 2018-04-12 | 2018-04-12 | Interactive real-time free stereo display method based on rendering pipeline |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108573524B (en) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109448136B (en) * | 2018-09-29 | 2023-03-28 | 北京航空航天大学 | Virtual scene browsing method based on region of interest |
CN109829962B (en) * | 2019-01-29 | 2022-11-25 | 广联达科技股份有限公司 | Object space hidden line elimination calculation acceleration method using OPENGL |
CN110458914B (en) * | 2019-08-15 | 2023-06-27 | 北京攸乐科技有限公司 | Multifunctional shader and engine rendering method |
CN110706326B (en) * | 2019-09-02 | 2020-06-16 | 广东省城乡规划设计研究院 | Data display method and device |
CN110838166B (en) * | 2019-10-21 | 2024-02-13 | 腾讯科技(深圳)有限公司 | Specific data detection method, device, equipment and storage medium |
CN110827391B (en) * | 2019-11-12 | 2021-02-12 | 腾讯科技(深圳)有限公司 | Image rendering method, device and equipment and storage medium |
CN110969688B (en) * | 2019-11-29 | 2023-04-11 | 重庆市勘测院 | Real-time color homogenizing method for real-scene three-dimensional model |
CN111932689B (en) * | 2020-07-03 | 2023-11-14 | 北京庚图科技有限公司 | Three-dimensional object quick selection method adopting ID pixel graph |
CN116391206A (en) * | 2020-11-05 | 2023-07-04 | 谷歌有限责任公司 | Stereoscopic performance capture with neural rendering |
CN112667234B (en) * | 2020-12-22 | 2021-12-24 | 完美世界(北京)软件科技发展有限公司 | Rendering pipeline creating method and device, storage medium and computing equipment |
CN112529995B (en) * | 2020-12-28 | 2023-03-31 | Oppo(重庆)智能科技有限公司 | Image rendering calculation method and device, storage medium and terminal |
CN112785676B (en) * | 2021-02-08 | 2024-04-12 | 腾讯科技(深圳)有限公司 | Image rendering method, device, equipment and storage medium |
CN112884875B (en) * | 2021-03-19 | 2024-09-27 | 腾讯科技(深圳)有限公司 | Image rendering method, device, computer equipment and storage medium |
CN113012270A (en) * | 2021-03-24 | 2021-06-22 | 纵深视觉科技(南京)有限责任公司 | Stereoscopic display method and device, electronic equipment and storage medium |
CN113345068B (en) * | 2021-06-10 | 2023-12-05 | 西安恒歌数码科技有限责任公司 | Method and system for drawing war camouflage based on osgEarth |
CN114898006A (en) * | 2022-05-20 | 2022-08-12 | 北京字跳网络技术有限公司 | Interaction method, device, equipment and storage medium |
CN117472592B (en) * | 2023-12-27 | 2024-03-19 | 中建三局集团有限公司 | Three-dimensional model explosion method and system based on vertex shader and texture mapping |
CN118334227B (en) * | 2024-06-12 | 2024-09-03 | 山东捷瑞数字科技股份有限公司 | Visual texture mapping method and system based on three-dimensional engine |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482978A (en) * | 2009-02-20 | 2009-07-15 | 南京师范大学 | ENVI/IDL oriented implantation type true three-dimensional stereo rendering method |
CN104504671A (en) * | 2014-12-12 | 2015-04-08 | 浙江大学 | Method for generating virtual-real fusion image for stereo display |
EP2949121A1 (en) * | 2013-02-06 | 2015-12-02 | Koninklijke Philips N.V. | Method of encoding a video data signal for use with a multi-view stereoscopic display device |
WO2017092335A1 (en) * | 2015-12-01 | 2017-06-08 | 乐视控股(北京)有限公司 | Processing method and apparatus for displaying stereoscopic image |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1542167A1 (en) * | 2003-12-09 | 2005-06-15 | Koninklijke Philips Electronics N.V. | Computer graphics processor and method for rendering 3D scenes on a 3D image display screen |
-
2018
- 2018-04-12 CN CN201810330487.8A patent/CN108573524B/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482978A (en) * | 2009-02-20 | 2009-07-15 | 南京师范大学 | ENVI/IDL oriented implantation type true three-dimensional stereo rendering method |
EP2949121A1 (en) * | 2013-02-06 | 2015-12-02 | Koninklijke Philips N.V. | Method of encoding a video data signal for use with a multi-view stereoscopic display device |
CN104504671A (en) * | 2014-12-12 | 2015-04-08 | 浙江大学 | Method for generating virtual-real fusion image for stereo display |
WO2017092335A1 (en) * | 2015-12-01 | 2017-06-08 | 乐视控股(北京)有限公司 | Processing method and apparatus for displaying stereoscopic image |
Also Published As
Publication number | Publication date |
---|---|
CN108573524A (en) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108573524B (en) | Interactive real-time free stereo display method based on rendering pipeline | |
EP3057066B1 (en) | Generation of three-dimensional imagery from a two-dimensional image using a depth map | |
JP4555722B2 (en) | 3D image generator | |
US6222551B1 (en) | Methods and apparatus for providing 3D viewpoint selection in a server/client arrangement | |
US8860790B2 (en) | Rendering improvement for 3D display | |
CN104427325B (en) | Fast integration image generating method and the naked eye three-dimensional display system with user mutual | |
KR101732836B1 (en) | Stereoscopic conversion with viewing orientation for shader based graphics content | |
CN108573521B (en) | Real-time interactive naked eye 3D display method based on CUDA parallel computing framework | |
CN106204712B (en) | Piecewise linearity irregularly rasterizes | |
US9460555B2 (en) | System and method for three-dimensional visualization of geographical data | |
CN108513123B (en) | Image array generation method for integrated imaging light field display | |
CN103562963A (en) | Systems and methods for alignment, calibration and rendering for an angular slice true-3D display | |
Bonatto et al. | Real-time depth video-based rendering for 6-DoF HMD navigation and light field displays | |
CN114998559B (en) | Real-time remote rendering method for mixed reality binocular stereoscopic vision image | |
KR20130012504A (en) | Apparatus and method for rendering | |
CN114255315A (en) | Rendering method, device and equipment | |
CN107562185B (en) | Light field display system based on head-mounted VR equipment and implementation method | |
KR20000041329A (en) | Stereoscopic image converting method and apparatus | |
JP2006163547A (en) | Program, system and apparatus for solid image generation | |
CN112969062B (en) | Double-screen linkage display method for two-dimensional view of three-dimensional model and naked eye three-dimensional image | |
WO2019026388A1 (en) | Image generation device and image generation method | |
CN114140566A (en) | Real-time rendering method for design effect of building drawing | |
Thatte et al. | Real-World Virtual Reality With Head-Motion Parallax | |
Huang et al. | P‐4.15: Multi‐Viewpoint Glasses‐Free 3D Display Technology Based on Representation Fusion NeRF | |
Han et al. | Real-time double-depth-image-based rendering for autostereoscopic display systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |