4

iPhone でアニメーション化されたパーリン ノイズを作成したいので、最終的には次のようなことができます: http://dl.dropbox.com/u/1977230/example.png

私は見てみましたが、似たようなものや実際にパーリンノイズを表示する方法を見つけることができません。

OpenGL ES を調べるように言われましたが、パーリン ノイズや溶岩/プラズマ効果の例を検索しても何も見つかりません。

これについて何か助けていただければ幸いです。

ありがとう、アンドレ

4

3 に答える 3

10

さて、最初にパーリンノイズアルゴリズム自体を研究してください。http://en.wikipedia.org/wiki/Perlin_noiseは、離陸するのに最適な場所に見えます。

この効果のRGBAデータを取得すると、厄介なことが始まります。

基本的に2つのオプションがあります。

  • UIViewサブクラスを作成し、draw:(CGRect)メソッドをオーバーライドします。Objective-C ++ CocoaでRGBデータをビットマップに変換するを賢く使用して、データからCGImageを作成し、その画像を描画中の現在のコンテキストに描画します。

    CGContextDrawImage(UIGraphicsGetCurrentContext(), <#CGRect rect#>, <#CGImageRef image#>);
    

    これが静止画であれば大丈夫です。アニメートしている場合、これは最善の解決策ではない可能性があります。

  • iPhoneのOpenGLESに慣れてください。iPhoneSDKのOpenGLESの例は、優れた出発点です。テクスチャマッピングを研究します。glTexImage2Dに慣れたら、それを使用して画像をロードします。

    この例は、次のように簡単に拡張できます。

    これらの定義があります:

      GLuint spriteTexture;
      GLubyte *spriteData;  // the perlin noise will be here
      size_t    width, height;
    

    次に、ESRendererのinitメソッドで、テクスチャ用のスペースを作成します。

    - (id) init { ....
    width = 512;  // make sure the texture size is the power of 2
    height = 512;
    
    glGenTextures(1, &spriteTexture);       
    glBindTexture(GL_TEXTURE_2D, spriteTexture);        
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);       
    //free(spriteData); // free this if not used any more
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);   
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);         
    

    ノイズが定期的に更新される場合は、renderメソッドでテクスチャを更新してください

            - (void) render { .....
    glBindTexture(GL_TEXTURE_2D, spriteTexture);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);   
    

ああ、古き良きビデオが$A000日にあるのが恋しいです:)

于 2010-04-07T02:57:38.233 に答える
6

パーリン ノイズの生成に使用できるオープン ソース プロジェクトを Github で開始しました。完全な 4 次元 (x、y、z、t) Perlin 生成をサポートしています。また、テクスチャのアイデアを試すためのサンドボックス アプリを含むプロジェクトも含まれています。 http://czgarrett.com/code/2011/05/18/perlin-noise-generator-for-ios.html

于 2011-05-19T01:18:44.830 に答える
2

現在、ルックアップ テクスチャを必要としない GLSL シェーダ用の別の Perlin ノイズ関数があります: https://github.com/ashima/webgl-noise/tree/master/src。これは iPhone で動作するはずです。

于 2011-06-02T13:58:15.900 に答える