パーポーフルート公式ブログ
【開発】【iOS】SIO2でサウンドを鳴らす

2010/02/03
テーマ: 開発 / iOS / 2010 / すべて


SIO2 を使った iPhone/iPad アプリでサウンドを再生する方法を調べました。 これといったドキュメントはないみたいですが、tutorial09, SIO2 source, SIO2 exporter を読んだ感じでは、以下のようになっているようです。

  • 内部で OpenAL を使っている。
  • Ogg 形式のサウンドファイルが再生できる。
  • Blender にて Material と ogg ファイルを関連付ける。
  • 具体的には、Material の 3 番目の texture に ogg ファイルを指定する。 -(ちなみに、1 番目は Diffuse, 2 番目は Shadowmap として使われるらしい。)
  • sio2_exporter.py が .sio2 ファイルに ogg ファイルを入れてくれる。
  • sio2ResourceBindAllSounds() を呼ぶと、Object に ogg ファイルが関連付けられる。
  • 1 つの sound につき 1 つの SIO2sound インスタンス。
  • SIO2sound の属性として、AUTOPLAY, LOOP, AMBIENT, FX, STREAM がある。
  • AUTOPLAY は起動時に自動的に再生。Blender texture の MipMap 属性でセットされる。
  • LOOP はループ再生。Blender texture の Repeat 属性でセットされる。
  • FX はドップラー効果とか距離に応じた減衰の効果。Blender texture の Interpol 属性でセットされる。AMBIENT はそういう効果なし。
  • STREAM はストリーム再生。ネットとかからダウンロードしつつ再生できる。Blender texture の UseAlpha 属性でセットされる。
  • AUTOPLAY, LOOP, AMBIENT にすると BGM になる。
  • FX にして sio2SoundPlay を呼ぶと、単発のサウンドが再生される。

まだ自分のプロジェクトでやってみたわけじゃないですが、これで音が出せそうな気がします。

exporter と独自パラメータ

SIO2sound の属性のような独自のパラメータは Blender UI に項目がないので、AUTOPLAY: MipMap, LOOP: Repeat のようになんとかして対応付ける必要があります。自分も以前そういうことをやったことがあって、Blender から Collada export したファイルの Spe.R が photon の最大検索半径、Spe.G が云々... という感じで苦労しながら無理やり対応付けていました。SIO2 でも同じことをしているのを見ると共感を覚えます。LOOP: Repeat なんかは意味が通じるのでとても良いマッピングだと思います:)


2010/02/03
テーマ: 開発 / iOS / 2010 / すべて