質問編集履歴

2 誤字

kaaa

kaaa score 38

2015/04/10 15:17  投稿

パーティカル生成される位置を広げたい。
パーティクル生成される位置を広げたい。
お世話になっております。
パーティクルをランダム生成しているのですが、このパーティクルが生成される位置をもっと左右に広げたいとおもっておりますが、どのようにするのが的確でしょうか?
画像ですと、四角で囲った部分からパーティクルが生成されますが、◯の位置からも生成したいです。
![イメージ説明][WIDTH:363](ee42aa900c19633057c2d23ac4bdca78.png)
何卒よろしくお願いいたします。
```lang-<ここに言語を入力>
public class ParticleSystem {
private Particle[] mParticles;
//パーティクルの数
private int PARTICLECOUNT = 15;
// for use to draw the particle
private FloatBuffer mVertexBuffer;
private ShortBuffer mIndexBuffer;
public ParticleSystem() {
mParticles = new Particle[PARTICLECOUNT];
// setup the random number generator
Random gen = new Random(System.currentTimeMillis());
// loop through all the particles and create new instances of each one
for (int i=0; i < PARTICLECOUNT; i++) {
mParticles[i] = new Particle(gen.nextFloat(), gen.nextFloat(), gen.nextFloat());
}
//三角形のサイズを決定
// a simple triangle, kinda like this ^
float[] coords = {
-0.4f,0.0f,0.0f, //左
0.4f,0.0f,0.0f, //右
0.0f,0.0f,0.4f}; //上
short[] icoords = {0,1,2};
mVertexBuffer = makeFloatBuffer(coords);
mIndexBuffer = makeShortBuffer(icoords);
}
// used to make native order float buffers
private FloatBuffer makeFloatBuffer(float[] arr) {
ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
bb.order(ByteOrder.nativeOrder());
FloatBuffer fb = bb.asFloatBuffer();
fb.put(arr);
fb.position(0);
return fb;
}
// used to make native order short buffers
private ShortBuffer makeShortBuffer(short[] arr) {
ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
bb.order(ByteOrder.nativeOrder());
ShortBuffer ib = bb.asShortBuffer();
ib.put(arr);
ib.position(0);
return ib;
}
public void draw(GL10 gl) {
//頂点配列を定義。3は3次元。
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
//パーティクルの色の指定。背景ではない。
gl.glColor4f(1f, 1f, 1f, 1f);
for (int i = 0; i < PARTICLECOUNT; i++) {
gl.glPushMatrix();
gl.glTranslatef(mParticles[i].x, mParticles[i].y, mParticles[i].z);
//GL_TRIANGLES3角形と指定してる。??
gl.glDrawElements(GL10.GL_TRIANGLES, 3, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
gl.glPopMatrix();
}
}
// simply have the particles fall at a hard coded gravity rate
// and when they hit zero, bump them back up to a z of 1.0f
public void update() {
for (int i = 0; i < PARTICLECOUNT; i++) {
mParticles[i].z = mParticles[i].z - 0.01f; //落下速度
if (mParticles[i].z < -6.0f) { //落下位置。下位
mParticles[i].z = 1.5f; //落下の最初の位置
}
}
}
}
```
  • Android

    7294 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • OpenGL

    204 questions

    OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

  • OpenGL ES

    34 questions

    携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

1 画像追加

kaaa

kaaa score 38

2015/04/10 00:05  投稿

パーティカル生成される位置を広げたい。
お世話になっております。
パーティクルをランダム生成しているのですが、このパーティクルが生成される位置をもっと左右に広げたいとおもっておりますが、どのようにするのが的確でしょうか?
画像ですと、四角で囲った部分からパーティクルが生成されますが、◯の位置からも生成したいです。
![イメージ説明][WIDTH:363](ee42aa900c19633057c2d23ac4bdca78.png)
何卒よろしくお願いいたします。
```lang-<ここに言語を入力>
public class ParticleSystem {
   private Particle[] mParticles;
   //パーティクルの数
   private int PARTICLECOUNT = 15;
   // for use to draw the particle
   private FloatBuffer mVertexBuffer;
   private ShortBuffer mIndexBuffer;
   public ParticleSystem() {
       mParticles = new Particle[PARTICLECOUNT];
       // setup the random number generator
       Random gen = new Random(System.currentTimeMillis());
       // loop through all the particles and create new instances of each one
       for (int i=0; i < PARTICLECOUNT; i++) {
           mParticles[i] = new Particle(gen.nextFloat(), gen.nextFloat(), gen.nextFloat());
       }
       //三角形のサイズを決定
       // a simple triangle, kinda like this ^
       float[] coords = {
               -0.4f,0.0f,0.0f, //左
               0.4f,0.0f,0.0f, //右
               0.0f,0.0f,0.4f}; //上
       short[] icoords = {0,1,2};
       mVertexBuffer = makeFloatBuffer(coords);
       mIndexBuffer = makeShortBuffer(icoords);
   }
   // used to make native order float buffers
   private FloatBuffer makeFloatBuffer(float[] arr) {
       ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
       bb.order(ByteOrder.nativeOrder());
       FloatBuffer fb = bb.asFloatBuffer();
       fb.put(arr);
       fb.position(0);
       return fb;
   }
   // used to make native order short buffers
   private ShortBuffer makeShortBuffer(short[] arr) {
       ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
       bb.order(ByteOrder.nativeOrder());
       ShortBuffer ib = bb.asShortBuffer();
       ib.put(arr);
       ib.position(0);
       return ib;
   }
   public void draw(GL10 gl) {
       //頂点配列を定義。3は3次元。
       gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
       //パーティクルの色の指定。背景ではない。
       gl.glColor4f(1f, 1f, 1f, 1f);
       for (int i = 0; i < PARTICLECOUNT; i++) {
           gl.glPushMatrix();
           gl.glTranslatef(mParticles[i].x, mParticles[i].y, mParticles[i].z);
           //GL_TRIANGLES3角形と指定してる。??
           gl.glDrawElements(GL10.GL_TRIANGLES, 3, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
           gl.glPopMatrix();
       }
   }
   // simply have the particles fall at a hard coded gravity rate
   // and when they hit zero, bump them back up to a z of 1.0f
   public void update() {
       for (int i = 0; i < PARTICLECOUNT; i++) {
           mParticles[i].z = mParticles[i].z - 0.01f; //落下速度
           if (mParticles[i].z < -6.0f) { //落下位置。下位
               mParticles[i].z = 1.5f; //落下の最初の位置
           }
       }
   }
}
```
  • Android

    7294 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • OpenGL

    204 questions

    OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

  • OpenGL ES

    34 questions

    携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る