[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00261] Re: Sound について



あだちです。

> メールに書かれたプログラムを見ると setSchedulingBound による
> 作用範囲設定がない気がするのですが、これで音は出てますでしょうか?

他にも下記のようなクラスがあります。


public class PointSoundNode extends TransformGroup {

  public PointSoundNode( String fileName ) {

      setCapability( TransformGroup.ALLOW_TRANSFORM_READ );
      setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE );
      setCapability( TransformGroup.ENABLE_PICK_REPORTING );

      BoundingSphere bounds = new BoundingSphere();

      // Point Sound
      PointSound sound = new PointSound();
      MediaContainer data = new MediaContainer( getAbsoluteFileURL( fileName ) );
      sound.setSoundData( data );
      sound.setInitialGain( 1.0f );
      Point2f fdg[] = {
                        new Point2f( 1.0f, 1.0f ),
                        new Point2f( 2.0f, 0.5f ),
                        new Point2f( 3.0f, 0.25f ),
                        new Point2f( 4.0f, 0.1f ),
			new Point2f( 5.0f, 0.05f ),
                      };
      sound.setDistanceGain( fdg );
      
      sound.setLoop( Sound.INFINITE_LOOPS );
      
      sound.setEnable( true );
      sound.setSchedulingBounds( bounds );
      sound.setPosition(-5.0f, 0.0f, -5.0f);
      
      addChild( sound );

  }

  public String getAbsoluteFileURL( String fileName ) {
      String result = null;
      try {
           File dir = new File( "." );
           String path = dir.getAbsolutePath();
           StringTokenizer st
             = new StringTokenizer( path, "/" );
           StringBuffer sb = new StringBuffer();
           sb.append( "file:/" );
           for( int i=0; i<st.countTokens(); ) {
              sb.append( st.nextToken() );
              sb.append( File.separator );
           }
           sb.append( fileName );
           result = sb.toString();
      }
      catch( Exception e ) {
          System.err.println( "File Name Error" );
      }
      return result;
  }
}




> PointSoundはデフォルトでは原点(x=0, y=0, z=0)に位置します。
> どこか別の座標に移動したいということでしょうか?
> 描画対象の Canvas3D を表示せずに音を出したいということでしょうか?

はい。そのとおりです。あくまで3D音響のみを使用したいと思っています。


> SimpleUniverse を使わずにひとつづつ View 側のシーングラフを構築し、
> AudioDevice3D を明示的に追加すれば実現できるのかも知れません。

SimpleUniverse を使わない場合はどのようになるのでしょうか?
JAVA3D プログラミングバイブルに載っていたでしょうか?
LocaleとBranchGroupの組み合わせがわかりません。


VirtualUniverse universe = new VirtualUniverse();
Locale locale = new Locale(universe);

BranchGroup root = new BranchGroup();



よろしくお願いします。


-- 
TeruoAdachi <adachi02_ver2@xxxxxxxxx>


__________________________________
Do You Yahoo!?
Upgrade Your Life
http://bb.yahoo.co.jp/