• Content count

  • Joined

  • Last visited

Community Reputation

100 Neutral

About babarorhum

  • Rank
  1. Problem Solved. I have added the following lines in my setupview : [color=#734c2d] [color=#450081]glEnable[/color][color=#000000]([/color]GL_CULL_FACE[color=#000000]);[/color][/color][color=#450081] glCullFace[color=#000000]([/color][color=#734c2d]GL_FRONT[/color][color=#000000]);[/color][/color] [color=#450081] [color=#000000]and also changed in DrawArrays from GL_TRIANGE_STRIP to GL_TRIANGLES. Work perfectly now [img][/img] [/color][/color] [color=#450081] [color=#000000]Cheers,[/color][/color][color=#450081] [color=#000000]Stéphane[/color][/color]
  2. Hello everyone, In a nutshell, i am using Blender 3D to export a cube with an associated UV map for texture three faces. I have managed to bring up textures on a cube in OpenGL ES for learning how to apply textures. However the result i get is the following:[list] [*]front face of the cube appears transparent [*]textures are visible in the back face (inside the cube) [*]and faces which are not in the UV map they simply appear black. [/list] Do you know how to proceed to have the textures shown in the front faces and seeing these faces which are not subject to the UV map ? Many thanks in advance ! [img][/img] Cheers, Stéphane ps. attached screenshot to be more visual
  3. Problem solved: the number of the indices didn't deal with the vertex indice array but another array. Once it has fixed ; it works perfectly fine ! Big Thanks !
  4. Hello, Have you considered using Blender 3D for your project ? or do you have a hard requirement to use Google Sketchup ? From my fresh experience in Blender 3D (and as matter of fact OpenGL ES), i found it quite easy to pick, free and supported by a wide and helpful community; and most important doing the OBJ export job quite well. There are couple of operations to do on your modeled objects before exporting them but it is no rocket science. Cheers, Stéphane
  5. Hello, I have recently created an importer which loads Blender 3D generated models into my under-development iphone app. For simple objects such as cube, cone, etc... it works perfectly fine. However, as soon as the objects reach a certain degree of complexity such as a donut shape , sphere; the engine display only a part of the objects; e.g half of it; sometimes less. I have checked the vertices and indices in the data model and they are perfectly fine. It looks like there would be a hard limit such as a number of vertices, memory allocation etc...but i can't exactly figure it out. As i am not yet quite confident in OpenGL ES there might be quite a direct answer to this problem ; but hasn't found it yet. Any pointer, tips are more than welcome to draw the second half of this sphere ;) Cheers, Stéphane PS. some screenshots to complement this post: The model in Blender: [attachment=7038:Blender Initial Sphere.png] The model in the Iphone simulator; as you can see quite not the same: [attachment=7039:Iphone Sphere.png]
  6. Hello, I have made a robot arm for an iphone app using OpenGl. Its forearm can turn left and right by rotating around the arm; and can also go up and down by rotating around a normal vector to its main axis. The left/right movements are going smoothly with GlRotate; the up and down as well. The problem comes when i would like the forearm to go the right/left at the same time as going as up and left. The final result is the right one meaning it arrives at the final position ; however it proceeds by sequence; for example it execute the 1st GLRotate to go right; and then the 2nd Glrotate to go up. The result i would like to see is in fact a combination of both up and right; in other words that it appears as one movement. What are your suggestions to arrive to such result ? Note that the axises of rotations are different for the left/right move and up/down. Many thanks in advance for any pointers, helps you can provide Babarorhum
  7. Hello, A trivial question for many of you; which i would really appreciate with this matter as i am starting to bang my head on the wall ;) My app contains a data model consisting of my "main axises" for each 3d object shown in the opengl module. These axises are in fact a representation axises of 3d objects (like the bone of a body and the 3d objects would be then the members of the body). Based on user interactions these changes in these main axises are calculated from the current position to the new one. and i would like to represent these changes also on the screen via the Open GL modules through some glrotate and translate. For example an axis with its origin in x =0/ y = 0/ z = 0 and x =2, y = 2, z = 0; would be translated in opengl as a glrotate on z wih an angle of 45 degrees; and no glrotate on x or y At first i thought taking two glrotates on x and y or x and z ; would do the trick but i am having some challenges. Now considering to use orthographic projection on the planes x,y / z,y / x,z to then determine glrotates for respectively x , y and z. Is that from your oppinion the way to go ? I am not fully convinced and i wanted your oppinion about it. Or do you see another approach which would be more straightforward ? Many thanks in advance for any insight you can provide babarorhum
  8. With a bit of delay, thanks both of you. It helped a lot !
  9. Hello, Thank you for your reply and the very valuable advises. The plan plan has been to read from the .OBJ file instead of .3DS file. Do you see any practical challenge in using such file format compare to the Collada or FBX format ? (except one is about parsing strings and xml). Thank you also for noting the 20Meg hard limit; i was unaware of such restriction but must confess i do not fully comprehend it: games such as Infinity Blade are rather heavy on the storage capacity; however they do not seem to need a computer to be downloaded. Has it been always the case or has it changed very recently ? Is there any specific conditions for such behaviour ? (e.g. country specific limitation, iphone using mobile network (i.e. excl phone connecting to WIFI, a specific operator; only on iphones not ipad etc...) As for your advice for the dupplication of vertices; i understand the principles behind the operation however my knowledge is fairly limited in the 3DS tool domain such as Lightware or 3DS; so i cannot match it with the right terminology and features in the modellers. Do you have a specific and common term which would help me to find the function to use in 3DS? For example, i have been looking into the optimization , merge options but have been unsuccesful so far. Cheers, Babarorum [quote name='YogurtEmperor' timestamp='1323736375' post='4893325'] On the 3DS side you did not unpack the vertices. You have a pool of non-duplicate vertices. You have not run over the faces of the object and have not duplicated the vertices according to the vertex indices on the faces. Additionally, it is [b]extremely[/b] unwise to import .3ds files. You should instead be making your own file format, or in the [i]very[/i] least importing from COLLADA or FBX. Importing directly from .3ds means you are asking users to store overly large model files on a small iOS device with limited storage capacity. After you breach 20 megabytes your app can no longer be downloaded without having an actual Macintosh computer. COLLADA and FBX reduce some of the data stored but still contain a lot of data you don’t need. The reason for using them, however, is that all 3D software can create these files. Meaning that importing from .3ds requires users to use one specific software package instead of allowing them to use their choice. Ultimately, the only wise path to follow is to make COLLADA or FBX files and then extract only the data you need from them and put them into your own file format. L. Spiro [/quote]
  10. An update on this question: I have installed the trial version of Lightwave to study the export functionality to OBJ and i have redrawn a similar cube as the 3DS studio version. It works right away into the Iphone app software which confirms the idea that i am missing some options in 3DS studio either while "designing" the cube or exporting it. As example, lightwave pulls out the following list of vertices; which is much longer than the previous ones for a similar structure created in 3DS (see above post). I also enclose the screenshot of the created cube in lightwave. One major difference is that each face of the cube is made of triangle. Interesting thing: when i "tesselate" the cube under 3ds studio it gives the same visual appearance (2 triangles per face)but exporting it ,doesn't give the same list. If any of you has a similar experience and know how to transform geometric structure in 3DS to obtain such result ; you will make my day -Babarorhum the Lightwave vertices: [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], -[/color]0.718622f[color="#000000"], [/color]2.07324f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]1.47058f[color="#000000"], [/color]1.03826f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]2.136f[color="#000000"], [/color]0.122397f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], -[/color]1.38403f[color="#000000"], [/color]1.15738f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], -[/color]0.718622f[color="#000000"], [/color]2.07324f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]2.136f[color="#000000"], [/color]0.122397f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]0.0143543f[color="#000000"], -[/color]0.0197569f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]0.679765f[color="#000000"], -[/color]0.935616f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]2.136f[color="#000000"], [/color]0.122397f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]1.47058f[color="#000000"], [/color]1.03826f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]0.0143543f[color="#000000"], -[/color]0.0197569f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]2.136f[color="#000000"], [/color]0.122397f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], [/color]0.737608f[color="#000000"], [/color]1.01523f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]0.0143543f[color="#000000"], -[/color]0.0197569f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]1.47058f[color="#000000"], [/color]1.03826f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], -[/color]0.718622f[color="#000000"], [/color]2.07324f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], [/color]0.737608f[color="#000000"], [/color]1.01523f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]1.47058f[color="#000000"], [/color]1.03826f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], [/color]0.737608f[color="#000000"], [/color]1.01523f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], -[/color]0.718622f[color="#000000"], [/color]2.07324f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], -[/color]1.38403f[color="#000000"], [/color]1.15738f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], [/color]0.0721975f[color="#000000"], [/color]0.0993714f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], [/color]0.737608f[color="#000000"], [/color]1.01523f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], -[/color]1.38403f[color="#000000"], [/color]1.15738f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], [/color]0.0721975f[color="#000000"], [/color]0.0993714f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], -[/color]1.38403f[color="#000000"], [/color]1.15738f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]2.136f[color="#000000"], [/color]0.122397f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]0.679765f[color="#000000"], -[/color]0.935616f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], [/color]0.0721975f[color="#000000"], [/color]0.0993714f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]2.136f[color="#000000"], [/color]0.122397f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], [/color]0.737608f[color="#000000"], [/color]1.01523f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]1.28449f[color="#000000"], [/color]0.0721975f[color="#000000"], [/color]0.0993714f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]0.679765f[color="#000000"], -[/color]0.935616f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]1.17128f[color="#000000"], -[/color]0.0143543f[color="#000000"], -[/color]0.0197569f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] [/color]0.300401f[color="#000000"], [/color]0.737608f[color="#000000"], [/color]1.01523f[color="#000000"],[/color][/color] [color="#4e00d7"][color="#000000"] -[/color]0.187194f[color="#000000"], -[/color]0.679765f[color="#000000"], -[/color]0.935616f[/color]
  11. Hello Kobo, Thanks for your suggestion. However neither GL_POLYGON nor GL_QUADS options are available for this version openGL. I found on a blog a post describing how to draw polygons with GL_TRIANGE_STRIP, hence my attempt. Since yesterday i've found out one bug though: the last parameter of the DrawArray method doesn't represent the number of vertices but the total number of elements within the array, e.g. 32 in the example. It helps in a way: it creates more gibberish on the screen; which is some sort of progress right ? [img][/img] Currently suspecting either the way i export from 3ds studio or something funny in my code to display the vertices. BabarOrhum [quote name='Kobo' timestamp='1323712638' post='4893188'] So, I don't know much about openGL but have you tried using GL_POLYLGON or some other mode instead of GL_TRIANGLE_STRIP ? [/quote]
  12. Hello, I have recently downloaded the 30-day trial version of 3DSMAX 2012; and would like to import some of my objects into an IPhone application. My idea has been to export the file from 3DS in OBJ format and read them from my app afterward. From the App log, i can see that all vertex data are correctly read as i can see exactly the values as they are defined in the OBJ file. However, what i get on the iphone simulator is not what i have drawn on 3DS. To simplify my investigation, i have imported a cube; with the following vertices (see the attached screenshots; one being the object drawn, second being the object shown in the iphone simulator) -49.6109f, -37.0908f, 14.4273f, -10.8045f, 40.7808f, 59.8638f, 76.1792f, 40.7808f, -14.4273f, 37.3728f, -37.0908f, -59.8638f, -25.655f, -65.3948f, 42.476f, 61.3287f, -65.3948f, -31.8151f, 100.1351f, 12.4768f, 13.6214f, 13.1514f, 12.4768f, 87.9125f, The code i use in the drawing method is the following: glVertexPointer(3, GL_FLOAT, 0, [drawObjectTmp getVertices]); glEnableClientState(GL_VERTEX_ARRAY); glDrawArrays(GL_TRIANGLE_STRIP, 0, 8); With the arrays of drawobjectmp having the exact values described in the OBJ file. Note also that the GL_TRIANGLES option has presented similar results on the screen. My current assumption is that something has to be done on the objects in 3DS studio max to export the file with a certain vertex "order"; however i am a total beginner in 3DS so it makes my troubleshooting rather slow. I have couple of leads on teslta to transform surface into trianges but it didn't really work out on the simulator screen either. I have tried also exporting the objects with the triange option on; didn't help either. I am sure it's a trivial issue for any experienced person in opengl and 3ds max; but i am not , yet so i am open for any suggestions, pointers to good tutorials or demos on this particular topic. Thanks )) Babarorhum
  13. Thanks. It helps a lot ! [img][/img]
  14. Hello, Thanks [b]NumberXaero[/b]. I went for the initial solution you have proposed and combined it with a rotation when the vectors are either on the same plane or are co-linears. After couple of testing rounds, i've found an interesting case ; and would not mind having your insight : Vectors are defined as follow: [list][*]"Old Vector A": Begin: [font=Menlo][size=2][b]1.000000,4.000000,0.000000 , End:3.828427,1.171573,0.000000[/b][/size][/font][*][font="Menlo"][size=2][b][font=arial, verdana, tahoma, sans-serif][size=3]"Old Vector B : Begin: [/size][/font][/b][/size][/font][font=Menlo][size=2][b]3.828427,1.171573,0.000000 , End:2.328427,2.671573,-2.121320[/b][/size][/font][*][font="Menlo"][size=2][b][b][font=arial, verdana, tahoma, sans-serif][size=3]New Vector A : Begin : [/size][/font][/b][/b][/size][/font][font=Menlo][size=2][b]1.000000,4.000000,0.000000 , End:5.000000,4.000000,0.000000[/b][/size][/font][/list] [font=Menlo][size=2][b][b][font=arial, verdana, tahoma, sans-serif][size=3]and following the initial solution i obtained:[/size][/font][/b][/b][/size][/font] [list][*][font=Menlo][size=2][b][b][font=arial, verdana, tahoma, sans-serif][size=3]New Vector B : Begin[/size][/font][/b][/b][/size][/font][font=Menlo][size=2][b][b][font=arial, verdana, tahoma, sans-serif][size=3][b]3.500000,5.500000,-2.121320 , End:2.085787,6.914214,-0.121320[/b] [/size][/font][/b][/b][/size][/font][/list] i would say it works precisely according to the calculation: taking the end of new Vector A ; and calculate the end of new vector B based on its direction * length. However, it doesn't seem to align completely with the movement of these two vectors: originally old Vector B has known a rotation of 90 degrees around Old Vector A and a 45 degrees against old Vector A. Therefore i would have expected a New Vector B inclined of 45 degrees against new Vector B with a Y coordinates in value 4. The thing is that the direction of old Vector B always define an increase of y coordinates; therefore the solution doesn't seem to apply to this situation (as keeping a y = 4 from end point of new vector A to end point Vector B ; would require to have an old vector B y-direction equal to 0) . Or am i totally off-track and it's the actual result is correct but the expected one which is incorrect ? Any help , insights are super welcome Babarorhum
  15. Hello, Thanks for your reply. It's exactly what i am looking for. I have tried it before; however i have met an issue when the New Vector A and old Vector B share the same direction on a 2D plane. For example, let's imagine: [list][*]'old' Vector A still have the coordinates (x,y,z ) : from 1, 4, 0 to 1,0,0[*]'old' Vector B is from 1,0,0 to 4,0,0[/list] A rotation happens on Vector A , it gives: [list][*]'New' Vector A from 1,4,0 to 5,4,0.[*]and with the solution below, it would give: new Vector B : 5,4,0 to 8,4,0.[/list] However, it would be expected new Vector B to be 5,4,0 to 5,7,0 if the angle alpha is kept between Vector A and B. Perhaps i misinterpreting the solution, or this is a special case. So far, i have been able to handle it as a special case, but i am looking for a generic solution if it exists of course. Babarorhum [quote name='NumberXaero' timestamp='1319240373' post='4875207'] If I follow correctly, you have two vectors A and B, B is on the tip of A, so you have positions for these vectors. So A and B both have a position, direction and length. Save this info, rotate A direction to get a new A direction. Old A Position = known Old A Direction = A end - A Start (normalize after length) Old A Length = Length(OldADirection) Old B... = Same as A New A Position = old A Position New A Direction = rotate old A Direction (vector rotation) New A Length = old A Length New B Position = old A position + New A Direction * old A Length New B Direction = old B Direction New B Length = old B Length New A Start = Old A Start New A End = Old A Start + New A Direction * Old A Length New B Start = New A End New B End = New B Start + Old B Direction * Old B Length [/quote]