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

Reply via email to