物理演算
物理エンジン
衝突検出、レイキャスト、ジョイント、レイヤードコリジョンフィルタリングを備えた完全な3D剛体シミュレーション。
- 剛体:質量と慣性を持つダイナミック、キネマティック、スタティック
- コリジョンシェイプ:ボックス、スフィア、カプセル、メッシュ、コンパウンド
- レイヤーマスク付きレイキャストとシェイプキャスト
- ジョイント:ヒンジ、ボール、スライダー、スプリング、固定、6自由度
- きめ細かなフィルタリングのためのコリジョンレイヤーとマスク
主な利点: 60 Hzの決定論的物理演算。VRとデスクトップの両モードでオブジェクトが自然にインタラクション。
// Create a dynamic rigidbody
raku_physics_body_create(entity, RAKU_BODY_DYNAMIC);
raku_physics_body_set_mass(entity, 2.5f);
// Add collision shape
raku_physics_shape_add_box(entity, 1.0f, 1.0f, 1.0f);
raku_physics_set_layer(entity, RAKU_LAYER_PROPS);
// Raycast with layer mask
RakuHit hit;
if (raku_physics_raycast(origin, dir, 100.0f, mask, &hit)) {
apply_damage(hit.entity, 10);
}
// Create a hinge joint
raku_physics_joint_hinge(door, frame, anchor, axis);
raku_physics_joint_set_limits(joint, 0.0f, 1.57f);
VFX
パーティクルシステム
90 FPSで100万パーティクルを処理可能なGPUアクセラレーテッドパーティクルシステム。フォースフィールド、トレイル、サブエミッター、カスタムエミッターシェイプに対応。
- コンピュートシェーダーシミュレーションによるGPUパーティクル
- フォースフィールド:重力、風、ボルテックス、乱流、アトラクター
- エミッターシェイプ:ポイント、スフィア、コーン、ボックス、メッシュサーフェス、エッジ
- 幅カーブとグラデーションカラー付きパーティクルトレイル
- 生成時、消滅時、衝突時にトリガーされるサブエミッター
主な利点: XRフレームレートでのシネマティックVFX。炎、煙、魔法、雨、爆発をフレームドロップなしで実現。
// Create GPU particle emitter
RakuEmitter em = raku_vfx_emitter_create(RAKU_VFX_GPU);
raku_vfx_emitter_set_rate(em, 50000);
raku_vfx_emitter_set_shape(em, RAKU_SHAPE_CONE, 30.0f);
// Lifetime, size, color over life
raku_vfx_set_lifetime(em, 1.0f, 3.0f);
raku_vfx_set_color_gradient(em, fire_gradient);
raku_vfx_set_size_curve(em, grow_then_shrink);
// Add force fields
raku_vfx_force_add(em, RAKU_FORCE_TURBULENCE, 2.5f);
raku_vfx_force_add(em, RAKU_FORCE_GRAVITY, -9.8f);
// Enable trails
raku_vfx_trail_enable(em, 0.3f); // trail time
raku_vfx_trail_set_width(em, width_curve);
// Sub-emitter on particle death
raku_vfx_sub_emitter(em, RAKU_ON_DEATH, spark_em);
アニメーション
アニメーションシステム
ブレンドツリー、ステートマシン、インバースキネマティクス、異なるスケルトン間のアニメーションリターゲティングを備えたプロダクショングレードのアニメーション。
- 1D、2Dフリーフォーム、ダイレクトブレンディング対応のブレンドツリー
- トランジション、条件、割り込み付きステートマシン
- IKソルバー:FABRIK(マルチジョイント)、TwoBoneIK(腕/脚)
- 異なるスケルトンプロポーションへのアニメーションリターゲティング
- 加算レイヤー、アニメーションマスキング、ルートモーション
主な利点: あらゆるキャラクターを自然にアニメーション。IKにより手がドアノブに届き、足が地形に自動的にフィット。
// Create animation state machine
RakuAnimFSM fsm = raku_anim_fsm_create(entity);
raku_anim_fsm_add_state(fsm, "idle", idle_clip);
raku_anim_fsm_add_state(fsm, "walk", walk_blend_tree);
raku_anim_fsm_add_state(fsm, "run", run_clip);
// Transition: idle -> walk when speed > 0.1
raku_anim_fsm_transition(fsm, "idle", "walk",
"speed", RAKU_GT, 0.1f, 0.2f);
// TwoBoneIK for hand placement
raku_anim_ik_two_bone(entity, "UpperArm_R",
"LowerArm_R", "Hand_R", target_pos);
// FABRIK chain for tentacle/tail
raku_anim_ik_fabrik(entity, chain_bones, 6, target);
// Retarget animation to different skeleton
raku_anim_retarget(src_skeleton, dst_skeleton, clip);
オーディオ
空間オーディオ
HRTFレンダリング、アンビソニクス、リバーブゾーン、オクルージョンによる真の3Dオーディオ。世界に存在する音。
- バイノーラル3Dポジショニングのための HRTF(頭部伝達関数)
- 没入型サウンドスケープのためのアンビソニクスエンコーディングとデコーディング
- ルームジオメトリ推定付きリバーブゾーン
- 壁やオブジェクトを通したオクルージョンとオブストラクションモデリング
- センド/リターンルーティングとエフェクトチェーン付きミキサーグループ
主な利点: 耳で位置を特定できる音。プレイヤーは背後の敵、洞窟のエコー、ドア越しのくぐもった声を聞き取れます。
// Create spatialized audio source
RakuAudioSrc src = raku_audio_source_create(entity);
raku_audio_source_set_clip(src, footstep_clip);
raku_audio_source_set_spatial(src, true);
// Enable HRTF
raku_audio_set_hrtf_enabled(true);
raku_audio_set_hrtf_profile(RAKU_HRTF_DEFAULT);
// Add reverb zone
RakuReverb rev = raku_audio_reverb_create();
raku_audio_reverb_set_preset(rev, RAKU_REVERB_CAVE);
raku_audio_reverb_set_bounds(rev, cave_box);
// Occlusion: sound through walls
raku_audio_source_set_occlusion(src, true);
raku_audio_occlusion_set_layers(RAKU_LAYER_WALLS);
// Mixer group routing
raku_audio_mixer_set_group(src, "SFX");
raku_audio_mixer_set_send("SFX", "Reverb", 0.4f);