Obj FAQ:
This document presents tips and tricks for making your models look their best in Ogoglio.
As you know if you've worked with 3D models (or any other type of transferable data) even iron clad standards have a lot of wiggle room in them, especially when the data type is evolving as digital 3D has in the past decade.
Units and scale:
Ogoglio spaces use the metric system of measurement for space and one unit is equivalent to one meter relative to the default avatar scale. So, if you have a vertex in your model at the x,y,z coordinates 1,1,1 then that vertex will appear in the space at one meter along the x axis, one meter along the y axis, and one meter along the z axis.
Location, Orientation:
Each thing in a space (review Core Concepts if needed) maintains a location, orientation, and a scale. Each of these is relative to the origin (0,0,0) of the model represented in the Obj file. So simple rotation around the Y axis of a thing results in the model appearing to rotate around the Y axis through the origin of your model. A location of 10,10,10 will place a model's origin at 10,10,10.
Scale:
A scale of 1 indicates no change in size, while 0.5 indicates that the model should rendered at half size and a scale of 10 indicates that the model should be rendered at ten times its default size. A scale smaller than 0.001 is undefined. For best effect you should scale your model's representation in the Obj file so that they are "normal" sized without forcing the user to scale them.
One sided polygons:
For purposes of optimization, the back faces of polygons are not rendered. Usually this is not a problem, but you will occasionally run across models which appear to have missing polygons when they are rendered by the Ogoglio viewer. You may not see this in your 3D editor because it may be rendering both sides of a polygon. For "solid" objects the solution is to flip the normal of the lost polygon, which causes the front to be outward and thus it is visible in Ogoglio spaces. For transparent or visibly hollow objects which really need to render both sides of a polygon, you will need to duplicate the polygon and flip the copy's normal.
For Blender users, there's a quick guide to flipping normals in the "reversing positioning of the normals vectors" section of this page.
File size:
Ogoglio spaces are like web pages in terms of file size. It is possible to load them up with 500MB of models, but chances are the user will run out of patience or the viewer will run out of memory before everything is loaded. Spaces are progressively loaded, so if you have a large scene be sure to break it up into several models so that users start to see the space quickly.
In general, your obj file and textures together should be less than 0.5MB in size and if you want to serve most people you should shoot for less than 100k per model and less than 2MB for the entire scene. A 2MB web page is still pretty big, even if it is progressively loaded.
That said, there are situations where big scenes will work: all your users have lots of RAM, fast machines, beefy graphics cards and are on a local network.
Landscapes:
All things, including landscapes, start out in a space at the origin (0,0,0). Users also start there by default, so unless you want your users to land underneath or far above your landscape you should position the ground right underneath the origin of your model. When a space designer adds a landscape to a space she can scale, rotate, and move it but it saves everyone time if the landscape defaults to a good position.
Normals:
Right now the Obj loader for things ignores normals in the obj file. This is a reaction to Blender and other free modelers doing braindead things to normals. If you have the option to export without normals, do so and save the bandwidth.
Texture UVs:
The Obj loader does use texture coordinates, so if you use textures be sure to export the coordinates or the textures won't appear. The supported texture formats are GIF and JPEG.