2011-12-24 2 views
1

GMaxで.objファイルを読み込むと、スペース(0,0,0)の中央に配置されます。 この位置を変更するにはどうすればよいですか?特別な機能はありますか?OpenGL pModel translation

私はglTranslatefを使いたくありません。むしろ、私はpModel全体を動かす(pModel構造を変更する)ことを望みます。関数glmScaleが見つかりました。翻訳や回転に似たものはありますか?

私は、このようになめらか行うOBJロード:

pModelScaun=glmReadOBJ(filename); 
glmUnitize(pModelScaun); 
glmFacetNormals(pModelScaun); 
glmVertexNormals(pModelScaun,90.0); 

、その後、私は光の位置と影frascum

for (unsigned int i = 0; i < pModelScaun->numtriangles; i++) 
{ 
    //compute the light vector (between the center of the current 
    //triangle and the position of the light (converted to object space) 
    for (unsigned int j = 0; j < 3; j++) 
    { 
     fvIncidentLightDir[j] = (pModelScaun->vertices[3*pModelScaun->triangles[i].vindices[0]+j] + 
           pModelScaun->vertices[3*pModelScaun->triangles[i].vindices[1]+j] + 
           pModelScaun->vertices[3*pModelScaun->triangles[i].vindices[2]+j])/3.0 - lp[j];    
    } 

を決定するために、三角形を使うには、あなたが私に道を指し示すことができます私はこの状況で変換行列を使うことができましたか?

+0

翻訳したい場合は、glTranlatef!を使用してください。 あなたはあまりOpenGLの状態に慣れていないようですが、もし私があなたが間違っていたら、すべてのモデルを0,0,0にして、それらを描画する必要があるときに状態を変換する必要がありますその後、ロードアイデンティティまたはpopmatrixで0,0,0に戻ります –

+0

私がopenGlで新しくなったのは事実です。私はshadowVolumesを扱う複雑なアルゴリズムを持っており、pModelのinernal構造を使用しています。だから私はそれを変更したいのです。 –

+0

あなたのモデルをどのように読み込んでいるのか、どのように描画しているのか、いくつかのコードを投稿してください。それは答えるのを助けるでしょう;) –

答えて

0

オブジェクトスペース内の頂点を使用しており、ライトをオブジェクトスペースに変換しているので、fvIncidentLightDirにオブジェクトの変換マトリックスを掛けてワールド空間に戻すことができます。