2016-09-04 2 views
1

Blenderで作成したオブジェクトをProcessingにインポートしました。Java/Processing - インポートされたオブジェクトがカメラの近くに消えます

以下のコードは動作しますが、オブジェクトは表示されますが、一見非常に小さい(または遠い)ようです。

PeasyCammでオブジェクトの近くを移動しようとすると、適切に表示されるまで接近する前に完全に消えます。私が理解できた唯一のことは、オブジェクト自体がカメラに非常に近いということですが、実際にはごくわずかです...

私は、オブジェクトを拡張しようとしましたが、

myshape.getVertexCount() 

への呼び出しは、私のオブジェクトを有することを示します頂点がなく、何も変わらないようです。私は画面の高さの約4分の1で消える小さなレンダリングされたオブジェクトを持っています。

PShape myshape; 

import peasy.test.*; 
import peasy.org.apache.commons.math.*; 
import peasy.*; 
import peasy.org.apache.commons.math.geometry.*; 
PeasyCam camera; 

void setup(){ 
    size(640, 480, P3D); 
    camera = new PeasyCam(this, 0, 0, 0, 50); 
    frameRate(10); 
    myshape = loadShape("test.obj"); 
    for (int i = 0; i < myshape.getVertexCount(); i++){ 
     PVector v = myshape.getVertex(i); 
     println("Inside"); 
     v.x *= 45; 
     v.y *= 45; 
     v.z *= 45; 
     myshape.setVertex(i, v); 
    } 
} 

void draw(){ 
    background(0); 


    shape(myshape); 
} 

答えて

1

getVertexCount()getVertex()機能のみvertex()機能を使用して、あなたはコードで作成する形状と協力。詳細はthe referenceにあります。

形状の縮尺を変更したい場合は、単にscale()機能を使用します。ここ20の要因によって、あなたのオブジェクトをスケーリングし、いくつかのサンプルコードは、次のとおりです。

PShape myshape; 

void setup() { 
    size(500, 500, P3D); 
    myshape = loadShape("test.obj"); 
} 

void draw() { 
    background(0); 
    translate(width/2, height/2, 100); 
    scale(20); 
    shape(myshape); 
} 

scaled object

編集:どうやらあなたはまだ、オブジェクトファイル内の頂点に取得することができ、それは同じようではありませんgetVertex()関数を呼び出しているように簡単です。まず、図形の子をループさせてから、子供の上にgetVertex()を呼び出す必要があります。詳細はthis forum postです(jeremydouglassの答えを参照)。

+0

私は変更を加え、コードをセットアップに入れました。しかし問題は同じです。 – user3168961

+0

@ user3168961とにかく、そのコードはどうするのですか?完全に削除するとどうなりますか?オブジェクトファイルへのリンクを投稿できますか? –

+0

コードは、インポートされたオブジェクトを表示することになっています。私は実際にsetVertexが効果がない理由を尋ねています。その理由は、オブジェクトがスケッチ(小さな)に表示されても、getVertexCountがゼロの頂点を示す理由です... https://1drv.ms/f/s!AlkeQFJKn27bcFtxyen14gKe4Hg – user3168961

関連する問題