Hi David, the code is correct but the tex gen func parameters are wrong.
texgen->setGenFuncSPlane(Vec4f(10.52,0,0,0.5)); texgen->setGenFuncTPlane(Vec4f(0,10.52,0,0.5)); well the size of the cube is 0.095 so 10.52 = 1.0 / 0.095 and the origin is in the middle so you need the 0.5 in x and y. Andreas > Hi, > > I'm trying to texture a face of a cube VRML model with an Image by creating > a TextureChunk holding the Image and TexGenChunk to automatically generate > the texture coords for the Image. The texture is partly displayed, but only > a small square (about 50x50 pixels from the lower left of the original > 1024x1024 texture) displays on the face in the corner of the face. (Links to > images of my problem below) Any ideas what the problem could be? > > I could be related to the setGenFuncSPlane and setGenFuncTPlane settings, as > when I change the 1 to a larger number it displays more of the texture, but > it is still a small square in the corner of the face. I have the problem > if I use either POT or NPOT images (the system has both NPOT and RectTex > support). > > Problem: > http://ubicomp.lancs.ac.uk/~molyneau/testTexture.jpg > The actual texture: > http://ubicomp.lancs.ac.uk/~molyneau/actualTexture_1024.jpg > > > My code for texturing: > > std::string coretype = theFace->getCore()->getTypeName(); > > if (coretype == "MaterialGroup") // proably a VRML file > { > > MaterialGroupPtr mg = MaterialGroupPtr::dcast( > materialGroupNode->getCore() ); > > beginEditCP(mg); > { > ChunkMaterialPtr material = ChunkMaterialPtr::dcast(mg->getMaterial()); > > TextureChunkPtr tex = TextureChunk::create(); > > beginEditCP(tex); > { > tex->setImage( theImage ); > tex->setMinFilter( GL_LINEAR ); > tex->setMagFilter( GL_LINEAR ); > tex->setWrapS( GL_CLAMP_TO_EDGE ); > tex->setWrapT( GL_CLAMP_TO_EDGE ); > tex->setEnvMode( GL_REPLACE ); > > if( osgispower2( theImage->getWidth() ) && osgispower2( > theImage->getHeight() ) ) > { > // power-of-two image. Nice, nothing special to do here. > } > else if(hasNPOT) > { > // NPOT image, but GL_ARB_non_power_of_two supported, don't need to > anything special > } > else if(hasRectTex) > { > // Rectangular texChunktures are available, but they need to be explicitly > enabled > tex->setTarget(GL_TEXTURE_RECTANGLE_ARB); > } > else > { > tex->setScale(false); // Tell OpenSG not to scale the image if NPOT. > } > } > endEditCP(tex); > > TexGenChunkPtr texgen = TexGenChunk::create(); > beginEditCP(texgen); > texgen->setGenFuncS(GL_OBJECT_LINEAR); > texgen->setGenFuncT(GL_OBJECT_LINEAR); > texgen->setGenFuncSPlane(Vec4f(1,0,0,0)); > texgen->setGenFuncTPlane(Vec4f(0,1,0,0)); > endEditCP(texgen); > > beginEditCP(material); > material->addChunk( tex ); > material->addChunk( texgen ); > endEditCP(material); > > } > endEditCP(mg); > > } > > Part of my simple VRML code (each face is a shape) : > > #VRML V2.0 utf8 > > # Cube of 9.5cm side, origin is centre > Group # for an object/scene made of more than one shape > { > children > [ > DEF back Shape # Node name here is front > { > appearance Appearance > { > material Material > { > diffuseColor 0.5 0.5 0.5 # RGB = grey > } > } > geometry IndexedFaceSet # define front face > { > coord Coordinate # DM define centre of cube to be origin > { > # cube side of 20cm > point [ > -0.047 -0.047 -0.047, > 0.047 -0.047 -0.047, > 0.047 0.047 -0.047, > -0.047 0.047 -0.047, > ] > } > coordIndex [ 3,2,1,0 ] > } > } > > Also, Is there any more up-to-date and comprehensive documentation planned > for OpenSG? While the tutorial is good for a first time user of OpenSG, it > only provides a simplistic and incomplete view of OpenSG's capabilities. I'm > finding that I have to spend a long time searching the mailing list archives > and looking at the source code for lots of small pieces of information (such > as how to add textures to material groups, NPOT texture handling or > multithreading with external threads) which are not even mentioned in the > tutorial, just to get a simple VRML model textured. > > Thanks, > Dave > > BTW: Thanks for the replies on my earlier question (below) - it was an > uninitialised thread giving me problems. > > > ----- Original Message ----- > From: <[EMAIL PROTECTED]> > To: <opensg-users@lists.sourceforge.net> > Sent: Tuesday, February 06, 2007 8:13 PM > Subject: Opensg-users Digest, Vol 9, Issue 10 > > >> Send Opensg-users mailing list submissions to >> opensg-users@lists.sourceforge.net >> >> To subscribe or unsubscribe via the World Wide Web, visit >> https://lists.sourceforge.net/lists/listinfo/opensg-users >> or, via email, send a message with subject or body 'help' to >> [EMAIL PROTECTED] >> >> You can reach the person managing the list at >> [EMAIL PROTECTED] >> >> When replying, please edit your Subject line so it is more specific >> than "Re: Contents of Opensg-users digest..." >> >> >> Today's Topics: >> >> 1. Re: Crash in osgthread.cpp when loading VRML file from Opensg >> CVS compiled with MSVC2005 (Marcus Lindblom) >> 2. Re: OpenSG with FOX (Dirk Reiners) >> 3. Re: normals newbie q (Dirk Reiners) >> 4. DynFieldAttachment Example (Aron Bierbaum) >> >> >> ---------------------------------------------------------------------- >> >> Message: 1 >> Date: Tue, 06 Feb 2007 15:41:56 +0100 >> From: Marcus Lindblom <[EMAIL PROTECTED]> >> Subject: Re: [Opensg-users] Crash in osgthread.cpp when loading VRML >> file from Opensg CVS compiled with MSVC2005 >> To: opensg-users@lists.sourceforge.net >> Message-ID: <[EMAIL PROTECTED]> >> Content-Type: text/plain; charset=ISO-8859-1; format=flowed >> >> Hi David, >> >> Dummy check: are you loading from a different (uninitialized) thread? >> >> Cheers >> /Marcus >> >> David Molyneaux wrote: >>> Hi everyone, >>> >>> I have an application which is trying to load some basic VRML files (such >>> as >>> a cube) and display them with GLUT. Unfortunately I'm getting a crash in >>> osgthread.cpp with Opensg CVS version libraries compiled in MSVC2005 on >>> Win32. The error occurs when trying to access the Thread Local Storage in >>> the function UInt32 WinThreadBase::getAspect(void) >>> >>> At line: pUint = (UInt32 *) TlsGetValue(_aspectKey); >>> The _aspectKey is 10, but windows returns NULL when calling TlsGetValue. >>> I >>> know this function is already being called successfully multiple times >>> with >>> the same _aspectKey value during the SceneFileHandler intialisation. >>> >>> Error Message: >>> Unhandled exception at 0x00e46e69 (OSGSystemD.dll) in project.exe: >>> 0xC0000005: Access violation reading location 0x00000000. >>> >>> The library and application are both compiled with Multi-threaded Debug >>> DLL, >>> using the standard support libraries. Both debug and release versions of >>> my >>> application crash at the same place. >>> >>> My code where the crash is occuring: >>> >>> bool OpenSGObject:: LoadGeometryToScenegraph( const string &filename ) >>> { >>> NodePtr nodeGeometry = SceneFileHandler::the().read( >>> filename.c_str() ); >>> // Crashes on this call... >>> >>> if ( nodeGeometry == NullFC ) >>> return false; >>> >>> // Add node to scenegraph root >>> beginEditCP(root, Node::ChildrenFieldMask); >>> >>> ....etc... >>> >>> Loading works correctly in the tutorial 10loading.cpp with the same VRML >>> file. I'm using the same include files, libraries, DLLs and C++ >>> pre-processor options in my application, so I'm a bit mystified. >>> >>> Any suggestions or ideas what this crash might indicate? >>> >>> Could I somehow define OSG_ASPECT_USE_DECLSPEC rather than >>> OSG_ASPECT_USE_LOCALSTORAGE to get around this (I say this without >>> knowing >>> anything about the internals of OpenSG...). >>> >>> Thanks, >>> Dave Molyneaux >>> > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier. > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Opensg-users mailing list > Opensg-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensg-users > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Opensg-users mailing list Opensg-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensg-users