openrm-users Mailing List for OpenRM Scene Graph
Brought to you by:
wbethel
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(2) |
Oct
|
Nov
(2) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(8) |
Jul
(1) |
Aug
(7) |
Sep
(7) |
Oct
(4) |
Nov
(1) |
Dec
|
2002 |
Jan
(2) |
Feb
|
Mar
(3) |
Apr
(6) |
May
(7) |
Jun
(23) |
Jul
(8) |
Aug
(5) |
Sep
(1) |
Oct
|
Nov
(11) |
Dec
(3) |
2003 |
Jan
(14) |
Feb
(6) |
Mar
(8) |
Apr
(1) |
May
(7) |
Jun
(1) |
Jul
(2) |
Aug
(3) |
Sep
(28) |
Oct
(9) |
Nov
(2) |
Dec
(2) |
2004 |
Jan
(8) |
Feb
(1) |
Mar
(3) |
Apr
(19) |
May
(12) |
Jun
(2) |
Jul
|
Aug
|
Sep
(2) |
Oct
(4) |
Nov
(9) |
Dec
|
2005 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(9) |
Jul
(2) |
Aug
(2) |
Sep
(3) |
Oct
|
Nov
(8) |
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(9) |
May
(10) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(6) |
Dec
(24) |
2008 |
Jan
(21) |
Feb
(4) |
Mar
(17) |
Apr
(4) |
May
|
Jun
(4) |
Jul
(2) |
Aug
(10) |
Sep
(1) |
Oct
(2) |
Nov
(6) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
(26) |
May
(10) |
Jun
(4) |
Jul
(10) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(9) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
From: Wes B. <ewb...@r3...> - 2010-10-01 01:14:23
|
R. Aditya Kadambi wrote: > Hi; > > I have set up my rendering window with 4 viewports. These 4 viewports > are pretty much "independent" in terms of data sharing. So, events on > one viewport do not affect the others. The data in that viewport changes > and needs to be re-rendered. > > I also have the ability to switch from 4-1 (4 viewports in 1 window) > system to 1-1(1 viewport in 1 window). In the 1-1 system, the other > images are not rendered. I do this via rmTraverseEnableMask(node, RM_FALSE). > > I have noticed that the transformations/events in 1-1 is extremely fast, > whereas in the 4-1 system, the transformations in the selected viewport > become very slow. > > Does RM have a mechanism where I can have the same speed in the 4-1 > system as in 1-1 system? > Hi, Ultimately, debugging rendering performance can be tricky business! That said, I can offer a few suggestions/guidelines/observations that may help. Minimizing state changes through careful scene graph design/optimization. Each time you have an OpenGL state change, caused by a change in material property, transformation (like a rotation or other change in the modelview matrix, which the viewport operation will do), etc. you are introducing a hiccup into the graphics pipeline. Basically, to get the best possible performance, you want to minimize the number of state changes. The easiest way to do that is to set state at high level scene graph nodes (root nodes or those close to the root in depth). This way, what will happen at render time is that you will be issuing a few state change commands followed by a lengthy dispatch of drawable stuff to the graphics pipeline. The viewport operation is a change to the modelview matrix, e.g., a state change. By itself, you shouldn't see any difference in performance going from one viewport to four viewports just due to that, except in "extreme" circumstances. By "extreme" I mean if you're scene consists of, say, 100M triangles. In that case, I might expect to see a few percent difference in absolute performance, but not that much. My guess is that your scene graph may contain some unusual state change combinations that are combining in a particularly bad way when you have multiple viewports. Having said all of that, I will also add that I've never personally tried a 4 viewport configuration myself! Hope this helps, wes |
From: R. A. K. <rak...@gm...> - 2010-09-30 15:44:30
|
Hi; I have set up my rendering window with 4 viewports. These 4 viewports are pretty much "independent" in terms of data sharing. So, events on one viewport do not affect the others. The data in that viewport changes and needs to be re-rendered. I also have the ability to switch from 4-1 (4 viewports in 1 window) system to 1-1(1 viewport in 1 window). In the 1-1 system, the other images are not rendered. I do this via rmTraverseEnableMask(node, RM_FALSE). I have noticed that the transformations/events in 1-1 is extremely fast, whereas in the 4-1 system, the transformations in the selected viewport become very slow. Does RM have a mechanism where I can have the same speed in the 4-1 system as in 1-1 system? -Aditya |
From: Wes B. <ewb...@r3...> - 2010-04-17 13:14:19
|
Thanks, Luke, for experimenting and following up. I'll make sure this information is propagated to the manual (and code docs) during the next round of revisions. wes Luke Crook wrote: > Hi Wes, > > I have figured out the correct initialization steps for; > :RM_PIPE_NO_PLATFORM using win32 OS calls, :RM_PIPE_WGL using win32 OS > calls, and :RM_PIPE_NO_PLATFORM using the SDL library. > > :RM_PIPE_NO_PLATFORM using win32 OS calls; > #a - rmInit (mandatory) > #b - Initialize rmPipe using rmPipeNew (mandatory) > #1 - CreateWindow (mandatory) > #2 - SetPixelFormat (mandatory) > #3 - wglCreateContext (mandatory) > #4 - wglMakeCurrent (mandatory) > #5 - rmPipeSetContext (optional) > #6 - rmPipeSetWindow or rmPipeSetWindowSize (mandatory) > #7 - rmPipeMakeCurrent (mandatory) > > :RM_PIPE_WGL using win32 OS calls; > #a - rmInit (mandatory) > #b - Initialize rmPipe using rmPipeNew etc. (mandatory) > #1 - CreateWindow (mandatory) > #2 - SetPixelFormat (mandatory) > #3 - rmPipeSetWindow or rmPipeSetWindowSize (mandatory) > #4 - rmPipeCreateContext (mandatory) > #5 - rmPipeMakeCurrent (mandatory) > > :RM_PIPE_WGL using the SDL library; > #a - rmInit (mandatory) > #b - Initialize rmPipe using rmPipeNew etc. (mandatory) > #1 - SDL_SetVideoMode (Creates the window & OpenGL Context) (mandatory) > #2 - rmPipeSetContext (optional) > #3 - rmPipeSetWindow or rmPipeSetWindowSize (mandatory) > #4 - rmPipeMakeCurrent (mandatory) > -- Wes Bethel -- R3vis Corporation -- voice (415) 806-6531 -- www.r3vis.com |
From: Luke C. <lu...@ba...> - 2010-04-16 23:22:30
|
Hi Wes, I have figured out the correct initialization steps for; :RM_PIPE_NO_PLATFORM using win32 OS calls, :RM_PIPE_WGL using win32 OS calls, and :RM_PIPE_NO_PLATFORM using the SDL library. :RM_PIPE_NO_PLATFORM using win32 OS calls; #a - rmInit (mandatory) #b - Initialize rmPipe using rmPipeNew (mandatory) #1 - CreateWindow (mandatory) #2 - SetPixelFormat (mandatory) #3 - wglCreateContext (mandatory) #4 - wglMakeCurrent (mandatory) #5 - rmPipeSetContext (optional) #6 - rmPipeSetWindow or rmPipeSetWindowSize (mandatory) #7 - rmPipeMakeCurrent (mandatory) :RM_PIPE_WGL using win32 OS calls; #a - rmInit (mandatory) #b - Initialize rmPipe using rmPipeNew etc. (mandatory) #1 - CreateWindow (mandatory) #2 - SetPixelFormat (mandatory) #3 - rmPipeSetWindow or rmPipeSetWindowSize (mandatory) #4 - rmPipeCreateContext (mandatory) #5 - rmPipeMakeCurrent (mandatory) :RM_PIPE_WGL using the SDL library; #a - rmInit (mandatory) #b - Initialize rmPipe using rmPipeNew etc. (mandatory) #1 - SDL_SetVideoMode (Creates the window & OpenGL Context) (mandatory) #2 - rmPipeSetContext (optional) #3 - rmPipeSetWindow or rmPipeSetWindowSize (mandatory) #4 - rmPipeMakeCurrent (mandatory) |
From: Wes B. <ewb...@r3...> - 2010-04-14 04:11:44
|
Hi Luke, Unfortunately, I'm on travel right now and don't have ready access to either the code or the manual...will take a look when I'm back in CA and follow up in a couple of days. tx, wes Luke Crook wrote: > On Tue, Apr 13, 2010 at 12:59 PM, Luke Crook <lu...@ba...> wrote: >> On Mon, Apr 12, 2010 at 1:37 PM, Wes Bethel <ewb...@r3...> wrote: >>> Hi, >>> >>> This business of initializing OpenRM under Windows with 3rd party libraries is one of those boundary cases that I never really had the opportunity to test. Some guesses/answers below... >> I'm still investigating. This time I used RM_PIPE_WGL which forces >> OpenRM to create the OpenGL context. >> >>>> If in #3 above I assign hglrc as the OpenGL context to the pipe using >>>> rmPipeSetContext, then I experience intermittent crashes. I'm a little >>>> confused as to why this is. >>> I'm wondering if there's a bug or some doc confusion with SDL...like maybe the window (hwnd) and OpenGL context are reversed somehow? >>> >> When using RM_PIPE_WGL, rmPipeSetContext has to be called or the >> window remains blank. >> >> However, rmPipeSetContext has to be called using hwnd. (I pass the >> result of CreateWindow to rmPipeSetContext). >> >> I fact, calling rmPipeSetContext using hwnd and not hglrc makes sense >> as I'm not sure how to get hold of hglrc when OpenRM creates the >> OpenGL context internally using RM_PIPE_WGL. > > Sorry, scratch the above. > > When using RM_PIPE_WGL (without using rmauxCreateW32Window) it seems > that I have to call rmPipeCreateContext to have OpenRM create the > OpenGL context. Is this correct? > > After calling rmPipeCreateContext, do I still have to call rmPipeSetContext ? > > - Luke > > -- Wes Bethel -- R3vis Corporation -- voice (415) 806-6531 -- www.r3vis.com |
From: Luke C. <lu...@ba...> - 2010-04-14 00:53:02
|
On Tue, Apr 13, 2010 at 12:59 PM, Luke Crook <lu...@ba...> wrote: > On Mon, Apr 12, 2010 at 1:37 PM, Wes Bethel <ewb...@r3...> wrote: >> >> Hi, >> >> This business of initializing OpenRM under Windows with 3rd party libraries is one of those boundary cases that I never really had the opportunity to test. Some guesses/answers below... > > I'm still investigating. This time I used RM_PIPE_WGL which forces > OpenRM to create the OpenGL context. > >>> If in #3 above I assign hglrc as the OpenGL context to the pipe using >>> rmPipeSetContext, then I experience intermittent crashes. I'm a little >>> confused as to why this is. >> >> I'm wondering if there's a bug or some doc confusion with SDL...like maybe the window (hwnd) and OpenGL context are reversed somehow? >> > > When using RM_PIPE_WGL, rmPipeSetContext has to be called or the > window remains blank. > > However, rmPipeSetContext has to be called using hwnd. (I pass the > result of CreateWindow to rmPipeSetContext). > > I fact, calling rmPipeSetContext using hwnd and not hglrc makes sense > as I'm not sure how to get hold of hglrc when OpenRM creates the > OpenGL context internally using RM_PIPE_WGL. Sorry, scratch the above. When using RM_PIPE_WGL (without using rmauxCreateW32Window) it seems that I have to call rmPipeCreateContext to have OpenRM create the OpenGL context. Is this correct? After calling rmPipeCreateContext, do I still have to call rmPipeSetContext ? - Luke |
From: Luke C. <lu...@ba...> - 2010-04-13 20:28:17
|
On Mon, Apr 12, 2010 at 1:37 PM, Wes Bethel <ewb...@r3...> wrote: > > Hi, > > This business of initializing OpenRM under Windows with 3rd party libraries is one of those boundary cases that I never really had the opportunity to test. Some guesses/answers below... I'm still investigating. This time I used RM_PIPE_WGL which forces OpenRM to create the OpenGL context. >> If in #3 above I assign hglrc as the OpenGL context to the pipe using >> rmPipeSetContext, then I experience intermittent crashes. I'm a little >> confused as to why this is. > > I'm wondering if there's a bug or some doc confusion with SDL...like maybe the window (hwnd) and OpenGL context are reversed somehow? > When using RM_PIPE_WGL, rmPipeSetContext has to be called or the window remains blank. However, rmPipeSetContext has to be called using hwnd. (I pass the result of CreateWindow to rmPipeSetContext). I fact, calling rmPipeSetContext using hwnd and not hglrc makes sense as I'm not sure how to get hold of hglrc when OpenRM creates the OpenGL context internally using RM_PIPE_WGL. - Luke |
From: Wes B. <ewb...@r3...> - 2010-04-12 21:46:45
|
Hi, This business of initializing OpenRM under Windows with 3rd party libraries is one of those boundary cases that I never really had the opportunity to test. Some guesses/answers below... Luke Crook wrote: > Hi Wes, > > I have a question regarding the steps necessary to initialize OpenRM > in win32 using RM_PIPE_NOPLATFORM, specifically Page 367 "Overview of > RM Initialization", step 3. > > I'm trying to figure out why everything works without me having to set > the OpenGL context using rmPipeSetContext. > > These are the steps my code performs; > > #1 - Initialize OpenRM > #2 - Create a new pipe > #3 - Use the SDL library to create a new window. Internally SDL > performs wglCreateContext, and wglMakeCurrent. I do not assign the > OpenGL context to the pipe. > #4 - Use rmPipeSetWindow to assign the window handle and dimensions to the pipe. > #5 - Use rmPipeMakeCurrent to make the OpenGL context current. > > If in #3 above I don't assign the OpenGL context to the pipe using > rmPipeSetContext, then everything works. This one is probably the most "stable" approach if you're not doing anything really advanced with multithreading. The idea is that SDL sets the context and that OpenRM just chugs along issuing OpenGL comments later on that are processed by the "current context." Anything else would require some deeper understanding of what SDL is doing. I'm not familiar with it, so can't even hazard a guess. > If in #3 above I assign a null pointer as theOpenGL context to the > pipe using rmPipeSetContext, then everything works. > If in #3 above I assign hwnd as the OpenGL context to the pipe using > rmPipeSetContext, then everything works. I have no idea why this one works :) Doesn't seem like it should work at all. > If in #3 above I assign hglrc as the OpenGL context to the pipe using > rmPipeSetContext, then I experience intermittent crashes. I'm a little > confused as to why this is. I'm wondering if there's a bug or some doc confusion with SDL...like maybe the window (hwnd) and OpenGL context are reversed somehow? > > So it seems that it is not necessary to use rmPipeSetContext with > RM_PIPE_NOPLATFORM, is this correct? Without knowing anything else, like what your app is doing later, can't say for sure. If you're doing just vanilla single-threaded, single-window and single-context stuff (using any of the OpenRM nodes/primitives) it seems like you're probably OK. HTH, wes |
From: Luke C. <lu...@ba...> - 2010-04-12 20:45:27
|
On Mon, Apr 12, 2010 at 1:37 PM, Wes Bethel <ewb...@r3...> wrote: > Luke Crook wrote: >> >> So it seems that it is not necessary to use rmPipeSetContext with >> RM_PIPE_NOPLATFORM, is this correct? > > Without knowing anything else, like what your app is doing later, can't say for sure. If you're doing just vanilla single-threaded, single-window and single-context stuff (using any of the OpenRM nodes/primitives) it seems like you're probably OK. Yes to the above as I am only replicating the OpenRM examples at the moment. I'll make a note to come back to this if I start seeing weird behaviour later. Thanks, - Luke |
From: Luke C. <lu...@ba...> - 2010-04-12 18:59:02
|
Hi Wes, I have a question regarding the steps necessary to initialize OpenRM in win32 using RM_PIPE_NOPLATFORM, specifically Page 367 "Overview of RM Initialization", step 3. I'm trying to figure out why everything works without me having to set the OpenGL context using rmPipeSetContext. These are the steps my code performs; #1 - Initialize OpenRM #2 - Create a new pipe #3 - Use the SDL library to create a new window. Internally SDL performs wglCreateContext, and wglMakeCurrent. I do not assign the OpenGL context to the pipe. #4 - Use rmPipeSetWindow to assign the window handle and dimensions to the pipe. #5 - Use rmPipeMakeCurrent to make the OpenGL context current. If in #3 above I don't assign the OpenGL context to the pipe using rmPipeSetContext, then everything works. If in #3 above I assign a null pointer as theOpenGL context to the pipe using rmPipeSetContext, then everything works. If in #3 above I assign hwnd as the OpenGL context to the pipe using rmPipeSetContext, then everything works. If in #3 above I assign hglrc as the OpenGL context to the pipe using rmPipeSetContext, then I experience intermittent crashes. I'm a little confused as to why this is. So it seems that it is not necessary to use rmPipeSetContext with RM_PIPE_NOPLATFORM, is this correct? - Luke |
From: Luke C. <lu...@ba...> - 2010-04-12 18:57:00
|
Hi Wes, I have a question regarding the steps necessary to initialize OpenRM in win32 using RM_PIPE_NOPLATFORM, specifically Page 367 "Overview of RM Initialization", step 3. I'm trying to figure out why everything works without me having to set the OpenGL context using rmPipeSetContext. These are the steps my code performs; #1 - Initialize OpenRM #2 - Create a new pipe #3 - Use the SDL library to create a new window. Internally SDL performs wglCreateContext, and wglMakeCurrent. I do not assign the OpenGL context to the pipe. #4 - Use rmPipeSetWindow to assign the window handle and dimensions to the pipe. #5 - Use rmPipeMakeCurrent to make the OpenGL context current. If in #3 above I don't assign the OpenGL context to the pipe using rmPipeSetContext, then everything works. If in #3 above I assign a null pointer as theOpenGL context to the pipe using rmPipeSetContext, then everything works. If in #3 above I assign hwnd as the OpenGL context to the pipe using rmPipeSetContext, then everything works. If in #3 above I assign hglrc as the OpenGL context to the pipe using rmPipeSetContext, then I experience intermittent crashes (I'm a little confused as to why this is.) So it seems that it is not necessary to use rmPipeSetContext with RM_PIPE_NOPLATFORM, is this correct? - Luke |
From: Wes B. <ewb...@r3...> - 2009-08-02 15:47:52
|
1.8.0 alpha v3 tarballs are now up at www.openrm.org/download. >From the www.openrm.org/news page: Summary of alpha-03 changes: * 3D texture image updates buglet repaired. * Sprite primtives: now support display lists. * 3D texturing: more extensive capability checks to better support Windows platforms. * New addChildTest RMdemo program to benchmark performance of scene graph updates. Pls let me know if you run into any problems. tx, wes |
From: R. A. K. <rak...@gm...> - 2009-07-29 13:16:05
|
On Tue, Jul 28, 2009 at 6:52 PM, Wes Bethel <ewb...@r3...> wrote: > > > R. Aditya Kadambi wrote: > > Hi Wes; > > > > Yes, I am doing it in the way dyntmp.c does. > > > > It shouldn't matter if it is 2D or 3D texture, right? > > Correct. > > > > > Let me illustrate what works (meaning the new texture appears in the > > next frame) and what doesn't. > > > > Works > > -------- > > > > RMtexture * texture; > > texture = rmTextureNew(3); > > rmTextureSetImages(texture, &volumeImage, 1, RM_FALSE); > > rmNodeSetSceneTexture(myTextureNode, texture); > > Yes, that will work. > > > > > Doesn't work > > --------------- > > > > RMtexture * texture; > > rmNodeGetSceneTexture(myTextureNode, &texture); > > rmTextureSetImages(texture, &volumeImage, 1, RM_FALSE); > > rmNodeSetSceneTexture(myTextureNode, texture); > > The difference between the non-working code and dyntmap.c is your code > has the rmNodeSetSceneTexture() call. It is not needed. > > The texture is already assigned to the node, you only need update its > image data with rmTextureSetImages(). > > Internally, OpenRM checks compares some keys to determine if it needs to > build a new texture object (first case) or update image data (second > case, which is the one you want). What is puzzling is why the image data > isn't updated in the second case after you assign an already assigned > texture again as a scene parameter. > > Looking at the relevant code just now, I see that the 3D texture case > has a bug in it. The 2D texture case will work OK in case #2 (your > doesn't work case), but not for 3D textures (but it should). dyntmap.c > uses 2D textures. > > Sorry about that! > > Let me make the fix and put up a 1.8.0-alpha-v3 tarball in the next day > or two for you to try out. > > tx, > wes Thanks, Wes. I will try it out. -Aditya |
From: Wes B. <ewb...@r3...> - 2009-07-28 22:52:52
|
R. Aditya Kadambi wrote: > Hi Wes; > > Yes, I am doing it in the way dyntmp.c does. > > It shouldn't matter if it is 2D or 3D texture, right? Correct. > > Let me illustrate what works (meaning the new texture appears in the > next frame) and what doesn't. > > Works > -------- > > RMtexture * texture; > texture = rmTextureNew(3); > rmTextureSetImages(texture, &volumeImage, 1, RM_FALSE); > rmNodeSetSceneTexture(myTextureNode, texture); Yes, that will work. > > Doesn't work > --------------- > > RMtexture * texture; > rmNodeGetSceneTexture(myTextureNode, &texture); > rmTextureSetImages(texture, &volumeImage, 1, RM_FALSE); > rmNodeSetSceneTexture(myTextureNode, texture); The difference between the non-working code and dyntmap.c is your code has the rmNodeSetSceneTexture() call. It is not needed. The texture is already assigned to the node, you only need update its image data with rmTextureSetImages(). Internally, OpenRM checks compares some keys to determine if it needs to build a new texture object (first case) or update image data (second case, which is the one you want). What is puzzling is why the image data isn't updated in the second case after you assign an already assigned texture again as a scene parameter. Looking at the relevant code just now, I see that the 3D texture case has a bug in it. The 2D texture case will work OK in case #2 (your doesn't work case), but not for 3D textures (but it should). dyntmap.c uses 2D textures. Sorry about that! Let me make the fix and put up a 1.8.0-alpha-v3 tarball in the next day or two for you to try out. tx, wes > > -Aditya > > On Mon, Jul 27, 2009 at 6:04 PM, Wes Bethel <ewb...@r3... > <mailto:ewb...@r3...>> wrote: > > R. Aditya Kadambi wrote: > > Hi; > > The guide says that to change an image (RMimage) in a texture, > you need to do it in two steps. > > 1. Get a pointer to texture using rmNodeGetSceneTexture. > 2. Set the new RMimage to this texture using rmTextureSetImages. > > This should take care of it for the Node during the next rmFrame > call. > > However, it doesn't seem to work. I tried another approach. My > RMimage is the same as far as all the dimensions is concerned. > The data is different. > > 1. Create a new texture using rmTextureNew > 2. Set the new RMimage to this texture using rmTextureSetImages > 3. Set this texture as a scene parameter to the node using > rmNodeSetSceneTexture. > > > I really don't see why the first approach shouldn't work? Any ideas? > > > Hi, > > The first approach is what is used in the dyntmap.c OpenRM demo > program -- it seems to work perfectly in that context. > > The second approach will also work, but is a bit more heavy-handed > in its use of resources. > > By "not work," do you mean your newly assigned texture doesn't > appear in the next frame? > > Taking a quick look at this code (rmTextureSetImages), it seems > reasonably robust: you can reuse the same RMimage object but laden > with updated pixel data and assign it using rmTextureSetImages and > it should display fine on the next frame. > > I'd suggest taking a look at the dyntmap.c example, which uses the > technique you're having trouble with, and see how it is different > from what your app does. > > tx, > wes > > > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Openrm-users mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/openrm-users -- Wes Bethel -- R3vis Corporation -- voice (415) 806-6531 -- www.r3vis.com |
From: R. A. K. <rak...@gm...> - 2009-07-28 14:36:28
|
Hi Wes; Yes, I am doing it in the way dyntmp.c does. It shouldn't matter if it is 2D or 3D texture, right? Let me illustrate what works (meaning the new texture appears in the next frame) and what doesn't. Works -------- RMtexture * texture; texture = rmTextureNew(3); rmTextureSetImages(texture, &volumeImage, 1, RM_FALSE); rmNodeSetSceneTexture(myTextureNode, texture); Doesn't work --------------- RMtexture * texture; rmNodeGetSceneTexture(myTextureNode, &texture); rmTextureSetImages(texture, &volumeImage, 1, RM_FALSE); rmNodeSetSceneTexture(myTextureNode, texture); -Aditya On Mon, Jul 27, 2009 at 6:04 PM, Wes Bethel <ewb...@r3...> wrote: > R. Aditya Kadambi wrote: > >> Hi; >> >> The guide says that to change an image (RMimage) in a texture, you need to >> do it in two steps. >> >> 1. Get a pointer to texture using rmNodeGetSceneTexture. >> 2. Set the new RMimage to this texture using rmTextureSetImages. >> >> This should take care of it for the Node during the next rmFrame call. >> >> However, it doesn't seem to work. I tried another approach. My RMimage is >> the same as far as all the dimensions is concerned. The data is different. >> >> 1. Create a new texture using rmTextureNew >> 2. Set the new RMimage to this texture using rmTextureSetImages >> 3. Set this texture as a scene parameter to the node using >> rmNodeSetSceneTexture. >> >> >> I really don't see why the first approach shouldn't work? Any ideas? >> > > Hi, > > The first approach is what is used in the dyntmap.c OpenRM demo program -- > it seems to work perfectly in that context. > > The second approach will also work, but is a bit more heavy-handed in its > use of resources. > > By "not work," do you mean your newly assigned texture doesn't appear in > the next frame? > > Taking a quick look at this code (rmTextureSetImages), it seems reasonably > robust: you can reuse the same RMimage object but laden with updated pixel > data and assign it using rmTextureSetImages and it should display fine on > the next frame. > > I'd suggest taking a look at the dyntmap.c example, which uses the > technique you're having trouble with, and see how it is different from what > your app does. > > tx, > wes > > > |
From: Wes B. <ewb...@r3...> - 2009-07-27 22:05:49
|
R. Aditya Kadambi wrote: > Hi; > > The guide says that to change an image (RMimage) in a texture, you need > to do it in two steps. > > 1. Get a pointer to texture using rmNodeGetSceneTexture. > 2. Set the new RMimage to this texture using rmTextureSetImages. > > This should take care of it for the Node during the next rmFrame call. > > However, it doesn't seem to work. I tried another approach. My RMimage > is the same as far as all the dimensions is concerned. The data is > different. > > 1. Create a new texture using rmTextureNew > 2. Set the new RMimage to this texture using rmTextureSetImages > 3. Set this texture as a scene parameter to the node using > rmNodeSetSceneTexture. > > > I really don't see why the first approach shouldn't work? Any ideas? Hi, The first approach is what is used in the dyntmap.c OpenRM demo program -- it seems to work perfectly in that context. The second approach will also work, but is a bit more heavy-handed in its use of resources. By "not work," do you mean your newly assigned texture doesn't appear in the next frame? Taking a quick look at this code (rmTextureSetImages), it seems reasonably robust: you can reuse the same RMimage object but laden with updated pixel data and assign it using rmTextureSetImages and it should display fine on the next frame. I'd suggest taking a look at the dyntmap.c example, which uses the technique you're having trouble with, and see how it is different from what your app does. tx, wes |
From: R. A. K. <rak...@gm...> - 2009-07-27 21:07:47
|
Hi; The guide says that to change an image (RMimage) in a texture, you need to do it in two steps. 1. Get a pointer to texture using rmNodeGetSceneTexture. 2. Set the new RMimage to this texture using rmTextureSetImages. This should take care of it for the Node during the next rmFrame call. However, it doesn't seem to work. I tried another approach. My RMimage is the same as far as all the dimensions is concerned. The data is different. 1. Create a new texture using rmTextureNew 2. Set the new RMimage to this texture using rmTextureSetImages 3. Set this texture as a scene parameter to the node using rmNodeSetSceneTexture. I really don't see why the first approach shouldn't work? Any ideas? -Aditya |
From: R. A. K. <rak...@gm...> - 2009-07-16 12:41:35
|
Hi Wes; Will OpenRM support OpenGL >= 2.0 in future? I think it currently supports 1.3, correct? 2.0 can get shader/GLSL features which would be great to have on the newer cards. -Aditya |
From: Wes B. <ewb...@r3...> - 2009-07-12 13:41:59
|
Nikitin Alexey wrote: > Hi, > > Thank you very much for version 1.8 > I was able to compile quickly and linked with my project. > > I would like to report a few problems that I noticed. > > * File /rmsync.c/ is not included in the project for /visualc/. Hi, Thanks for pointing out that rmsync.c is not included with the visualc workspace. That file is new between 1.6 and 1.8; I neglected to include it -- my bad. OpenRM 1.8 hasn't actually been "released" yet; you're working with a distribution that is a "late alpha" or "early beta." > > > * Definition > > typedef struct > { > long sec; > long usec; > } RMtime; > > creates some incompatibilities with my C++ project. > I do not understand what's case, but the repetition of /RMtime/ in the > first line resolve the problem: > > typedef struct RMtime > { > long sec; > long usec; > } RMtime; > > Could you be so kind to explain how to do it in right way? It sounds like you have a temporary workaround in hand. Another fix, and the one I will implement, is to add rmsync.c to the rm180/rm workspace. For what it's worth, 99% of the time, I do builds on windows using nmake from the command line rather than the visual interface. In that configuration, rmsync.c is compiled and everything seems to work OK. > > > * For my program, there is exactly the same speed as it was in version 1.6. > The speed does not depend on the video card. The processor is fully loaded. > The problems arised when my model size exceed 10 000 balls. Perhaps the > time is spent on the transformation of coordinates on the processor. > Could you recommend something? In your scene graph, are the 10,000 spheres contained in one primitive, or are they distributed across a bunch of primitives/nodes? In OpenRM, the optimum configuration will be to have all the spheres in one primitive: in that configuration, the entire collection will be cached into an OpenGL display list. I'd be curious to see the organization of your scene graph -- pls make a call to rmPrintSceneGraph() and send me the output. Thanks, wes |
From: Nikitin A. <agi...@gm...> - 2009-07-11 17:49:34
|
Hi, Thank you very much for version 1.8 I was able to compile quickly and linked with my project. I would like to report a few problems that I noticed. * File *rmsync.c* is not included in the project for *visualc*. * Definition typedef struct { long sec; long usec; } RMtime; creates some incompatibilities with my C++ project. I do not understand what's case, but the repetition of *RMtime* in the first line resolve the problem: typedef struct RMtime { long sec; long usec; } RMtime; Could you be so kind to explain how to do it in right way? * For my program, there is exactly the same speed as it was in version 1.6. The speed does not depend on the video card. The processor is fully loaded. The problems arised when my model size exceed 10 000 balls. Perhaps the time is spent on the transformation of coordinates on the processor. Could you recommend something? Best wishes, Alexey |
From: Wes B. <ewb...@r3...> - 2009-07-08 12:58:09
|
R. Aditya Kadambi wrote: > Hi; > > I was reading the OpenRM manual. It says that the order of rendering is > 3D Opaque, 3D Transparent followed by 2D objects. > > I am trying to render a 3D opaque object over a 3D transparent object. > When I render it, I see the 3D transparent object only. I know that the > 3D opaque object is there (by a switch, when I disable traversal of 3D > transparent object, I see the 3D opaque object beneath). Is there a way > to show the opaque object over the transparent object.? > Hi, You're correct -- rendering order is opaque 3D, transparent 3D, 2D. If you have both a transparent and opaque object at the same spatial location in the scene, the transparent one will always appear on top if the transparent obj's z coordinates are closer to the viewer. Additionally, the amount of transparency can affect how much of the stuff behind it you can actually see. The way to make the opaque object appear in front of the transparent object is to assign its vertices z values that are closer to the viewer. tx, wes |
From: R. A. K. <rak...@gm...> - 2009-07-07 20:23:51
|
Hi; I was reading the OpenRM manual. It says that the order of rendering is 3D Opaque, 3D Transparent followed by 2D objects. I am trying to render a 3D opaque object over a 3D transparent object. When I render it, I see the 3D transparent object only. I know that the 3D opaque object is there (by a switch, when I disable traversal of 3D transparent object, I see the 3D opaque object beneath). Is there a way to show the opaque object over the transparent object.? -Aditya |
From: R. A. K. <rak...@gm...> - 2009-06-12 20:29:15
|
Hi Wes; I will make the patch for 1.8-X-alpha and resend it to you. -Aditya On Fri, Jun 12, 2009 at 4:26 PM, Wes Bethel <ewb...@r3...> wrote: > R. Aditya Kadambi wrote: > > Hi Wes; > > > > Looks like addChildTest.c is missing in the demo programs. I just > > compiled the demo programs without that file. All the demos work fine. > > Hi, > > Sorry about that. > > As for the FreeBSD patches, yes, let's include them. Were the patches to > 1.6.X or to the 1.8.X-alpha version? Simplest thing would probably be > for you to resend them to me. > > Apologies to everyone for the general neglect. Too many demands > competing for too little attention is the general culprit. One of my > to-do items for the summer is to flush out accrued patches and as many > reported bugs as possible and get the 1.8.0 release out the door. > > tx, > wes > > > |
From: Wes B. <ewb...@r3...> - 2009-06-12 20:26:51
|
R. Aditya Kadambi wrote: > Hi Wes; > > Looks like addChildTest.c is missing in the demo programs. I just > compiled the demo programs without that file. All the demos work fine. Hi, Sorry about that. As for the FreeBSD patches, yes, let's include them. Were the patches to 1.6.X or to the 1.8.X-alpha version? Simplest thing would probably be for you to resend them to me. Apologies to everyone for the general neglect. Too many demands competing for too little attention is the general culprit. One of my to-do items for the summer is to flush out accrued patches and as many reported bugs as possible and get the 1.8.0 release out the door. tx, wes |
From: R. A. K. <rak...@gm...> - 2009-06-12 18:59:16
|
Hi Wes; Looks like addChildTest.c is missing in the demo programs. I just compiled the demo programs without that file. All the demos work fine. ------------------------------------------------ make: *** No rule to make target `addChildTest.c', needed by `addChildTest'. Stop. ------------------------------------------------- I had sent out a patch to add target for FreeBSD X86_64. Would it be possible to add it to RM? OK, details of the system on which I tested. My test system is Fedora 11 with Mesa 7.5-devel. Hardware: ATI X1950Pro Information from OpenRM glxinfo OpenRM Scene Graph (v1.8.0-alpha-01), Copyright (C) 1999-2008, R3vis Corporation. OpenGL Details: vendor: DRI R300 Project version: 1.4 Mesa 7.5-devel renderer: Mesa DRI R300 20090101 TCL DRI2 extensions: GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_imaging GL_ARB_multisample GL_ARB_multitexture GL_ARB_point_parameters GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_MESAX_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_rectangle GL_ARB_transpose_matrix GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_window_pos GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_logic_op GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_convolution GL_EXT_copy_texture GL_EXT_draw_range_elements GL_EXT_framebuffer_object GL_EXT_fog_coord GL_EXT_gpu_program_parameters GL_EXT_histogram GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_polygon_offset GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texture GL_EXT_texture3D GL_EXT_texture_compression_s3tc GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_vertex_array GL_APPLE_packed_pixels GL_ATI_blend_equation_separate GL_ATI_texture_env_combine3 GL_ATI_texture_mirror_once GL_ATI_separate_stencil GL_IBM_multimode_draw_arrays GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_INGR_blend_func_separate GL_MESA_pack_invert GL_MESA_ycbcr_texture GL_MESA_window_pos GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texture_rectangle GL_NV_texgen_reflection GL_NV_vertex_program GL_OES_read_format GL_SGI_color_matrix GL_SGI_color_table GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SUN_multi_draw_arrays GLU Details: version: 1.3 extensions: GLU_EXT_nurbs_tessellator GLU_EXT_object_space_tess GLX Server Details: vendor: SGI version: 1.2 extensions: GLX_ARB_multisample GLX_EXT_import_context GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_copy_sub_buffer GLX_OML_swap_method GLX_SGI_swap_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_visual_select_group GLX Client Details: vendor: SGI version: 1.4 extensions: GLX_ARB_get_proc_address GLX_ARB_multisample GLX_EXT_import_context GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_allocate_memory GLX_MESA_copy_sub_buffer GLX_MESA_swap_control GLX_MESA_swap_frame_usage GLX_OML_swap_method GLX_OML_sync_control GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_EXT_texture_from_pixmap -------------------------------------------------------------------------------------- On Tue, Nov 25, 2008 at 10:35 AM, Wes Bethel <ewb...@r3...> wrote: > > I made a boo-boo with openrm-devel-src-1.8.0-alpha.tgz: a compile error > somehow escaped and was present in the 01 tarball. Sorry about that. > > Here is a v2 tarball: > http://www.openrm.org/downloads/openrm-devel-src-1.8.0-alpha-02.tgz > > While we're still in alpha, downloads for all OpenRM bits will be linked > from http://www.openrm.org/download.shtml > > tx, > wes > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Openrm-users mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/openrm-users > |