Skip to main content

Relationship between .obj file "v values" and on screen 2D coordinate?

No replies
jiapei100
Offline
Joined: 2006-12-04

Hi, all:

Simple .obj specification can be found at
http://www.royriggs.com/obj.html

<br />
v x y z</p>
<p>The vertex command, this specifies a vertex by its three coordinates. The vertex is implicitly named by the order it is found in the file. For example, the first vertex in the file is referenced as '1', the second as '2' and so on. None of the vertex commands actually specify any geometry, they are just points in space. 

I just want to know, if I created a on/off screen canvas of size 640*480 on my computer screen, what is the relationship between
"v values" of the.obj files and the exact values on the on/off screen canvas ???
Or, there is no relationship between this two at all?

In my case, my .obj file looks like:

g main<br />
# 75972 vertices.<br />
v -58.1117 -49.4189 -12.242<br />
v -58.0527 -50.0355 -11.9883<br />
v -58.1128 -50.6568 -11.8222<br />
v -58.1629 -51.2563 -11.7768<br />
v -58.2183 -51.8611 -11.7323<br />
v -58.2231 -52.4784 -11.7214<br />
v -58.259 -53.0993 -11.7188<br />
v -58.3331 -53.7061 -11.7407<br />
v -58.3663 -54.309 -11.7328<br />
v -58.3955 -54.9136 -11.7015<br />
v -58.4142 -55.526 -11.6696<br />
v -58.4299 -56.1264 -11.6939<br />
v -58.427 -56.7551 -11.8301<br />
v -58.4213 -57.3728 -12.0565<br />
v -58.8783 -29.3341 -12.3035<br />
v -58.8634 -29.9544 -12.0902<br />
v -58.8288 -30.5471 -11.949<br />
v -58.7427 -31.1332 -11.886<br />
v -58.6354 -31.7285 -11.9012<br />
v -58.5571 -32.331 -11.9593<br />
...<br />
v 55.3262 -54.4387 -11.2943<br />
v 55.3417 -55.068 -11.3683<br />
v 55.3343 -55.6911 -11.5067<br />
v 55.3041 -56.3406 -11.6606<br />
mtllib /.../filename.mtl<br />
usemtl default<br />
vt 0 0.198847 0.0<br />
vt 0 0.195965 0.0<br />
vt 0 0.193084 0.0<br />
vt 0 0.190202 0.0<br />
vt 0 0.18732 0.0<br />
vt 0 0.184438 0.0<br />
vt 0 0.181556 0.0<br />
vt 0 0.178674 0.0<br />
...

I loaded the .obj file like:

<br />
int flags = ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY ; // | ObjectFile.RESIZE;<br />
ObjectFile f = new ObjectFile(flags, 0.0f);<br />
m_S = null;<br />
try {<br />
	m_S = f.load(fname);<br />
} catch (FileNotFoundException e)<br />
{<br />
        ...<br />
}<br />
m_BGFace = m_S.getSceneGroup();<br />
m_Object3d = (Shape3D)m_BGFace.getChild(0);<br />
Bounds m_ObjBounds = m_Object3d.getBounds();

Now, as you might have noticed, I intended not to use the configuration "ObjectFile.RESIZE; " to avoid automatically resize when loading this .obj file.

Now, m_ObjBounds does show the bounds of this object's "v value list". (well, you may look on the v value list as a point list and calculate its boundary, Java3D Bounds and BoundingBox are pretty useful here )

However, I still can't find any relationship between this "loaded v values" and "on/off screen pixel coordinates".
For sure, there must be some relationship between this two, because Java3D must be able to load data from .obj files and display them automatically on the screen by Java3D itself. isn't it?

So, can anybody tell me, what is the relationship between .obj files' "loaded v values" and "on/off screen pixel coordinates" ??

Best Regards
JIA Pei