リリース 1.0.0
完全なチェンジログはこちらを参照してください。
Wonderland Engine 1.0.0 は、将来のバージョンのための強力な基盤を構築することに焦点を当てています:
NodeJS と esbuild の統合により、すべてのプロジェクトを NodeJS ベースにしつつ、これまでの内部バンドラーの便利さを保つことができました。また、npm パッケージとしてコンポーネントを共有することがかつてないほど簡単になりました。
JavaScript API を TypeScript に書き直しました。プロジェクトで JavaScript を使い続ける場合でも、IDE がより賢い提案を行うのがわかるでしょう。ですが、新しい機能を逃すことになります:
この書き直しにより、徹底したテストスイートを作成し、多くのバグを修正しました。新しい API については、「Wonderland Engine 1.0.0 JavaScript 移行」ブログ投稿で詳細を確認できます。
レンダリングについては、いくつかの重要な変更を行いました。例えば、デフォルトシェーダーのライティングモデルをより直感的な intensity
設定に変更して attenuation
を置き換えました。この変更によって将来の素晴らしいレンダリング機能への道が開かれます。
Wonderland Editor は Wonderland Engine 開発ワークフローの中心です。プロジェクトを Android デバイス(例:スタンドアロン VR ブラウザ)に直接起動する実験的な新機能を追加し、ポートフォワーディングを自動的に設定します。
最後に、オープンウェブは幅広いユーザーにリーチすることを可能にします。デバイス互換性だけでなく、言語も障壁になることがあります。プロジェクトを翻訳し、さらに多くのオーディエンスにリーチするためのツールを追加しました。
完全なチェンジログはこちらを参照してください。
互換性を壊す変更
後方互換性を非常に重視しているため、物事を壊す機会はあまりありません。主要なバージョンの切り替えに伴い、整理して正しい状態にする希少な機会があります。
そのため、徹底的に行いましたが、コミュニティとともに進めました!お気に入りのライブラリはすでに新しいバージョンに対応済みで、準備が整っています。
以下は、行った変更とその決定方法のいくつかの例です。結果についてのご意見を楽しみにしています。
例: .getTranslationWorld()
と .getTransformationWorld()
は危険なほど似ています。IDE の自動補完を使っても、間違った関数を使用していることに気付かないかもしれません。
その代わりに、オブジェクトの位置を記述するために「Position」を使用するようになりました。
例: 古い API ではすべてをグローバルな WL
オブジェクトに保存していました。それにより、他のライブラリに Wonderland Engine を埋め込むことや、1ページに複数のインスタンスを実行することが難しくなっていました。今では Wonderland Engine のインスタンスは WonderlandEngine
クラスでラップされ、インスタンス化の方法とタイミングを完全にコントロールできます。
チェンジログ
エディター
- ベンチマークビューを追加
- WebXR 体験の翻訳を支援するローカリゼーションビューを追加
- JavaScript マクロ WL_EDITOR を追加(エディターがコンポーネントをバンドルする際に
true
に設定) - カラーピッカーにアルファ値スライダーを追加
- 画像圧縮のために ETC1S(小さい、デフォルト)と UASTC(高品質)を選択可能に
- Sky Material の colorStop プロパティにデフォルトを追加
- 接続された Android デバイスに直接プロジェクトを起動するためのデバイスドロップダウンをランチページに追加(ポートフォワーディングが自動的に設定)
- パッケージ:未使用の VR と AR ボタンの SVG を削除
- Windows:ファイルの監視で発生するランダムなエラーメッセージを修正
- 空のアニメーションを持つアニメーションコンポーネントはランタイムで非アクティブに
- スクリプトと npm パッケージから自動的にコンポーネントを検出
- エディターで追加されたコンポーネントがランタイムで
undefined
を返す可能性のあるレアなバグを修正 - プロジェクトに様々な変更を加えた際に UI 全体がランダムに暗くなる問題を修正
- 非一様にスケールされた祖先を持つオブジェクトに対する回転ギズモの動作を修正
- プロジェクトの切り替え時に発生するクラッシュを修正
- FBX ファイルのリターゲティングを修正
- FBX ファイルのインポートエラーとクラッシュを修正
- リターゲティング時、新しいターゲットが見つからないトラックは今後削除
- すべてのカラープロパティのアルファ値をデフォルトで
1.0
に設定 - ネガティブなテキストコンポーネントのスペーシング値を設定できるように
- 既存の JavaScript バンドラーを削除し、デフォルトの “esbuild” バンドラーを採用
- エントリーポイントスクリプトで指定することを推奨し、“8thwallToken” 設定を削除
- テキスト素材にサムネイルを追加
- フォントにサムネイルを追加
- CLI
- シーンをインスタンス化しない –import コマンドを修正
- トークンが CI でのエディターへの認証情報のより安全な伝達方法として追加
- ベンチマークフレームワークを追加
- Linux
- ファイルの監視を修正
- 修飾キーの状態を修正
- ビュー
- アセットブラウザ:削除されたファイルが永久に削除されず、システムゴミ箱フォルダに移動されるようになりました
- アセットブラウザ:プロジェクトのルートとしてダブルクリックでデフォルトアプリケーションを起動する作業ディレクトリを設定
- コンソール:エラー、警告、情報チェックボックスの状態がプロジェクトごとに保持されるようになりました
- コンソール:水平スクロールを修正
- プロジェクト設定:エディターサーバーポートの変更時の大きな遅延を修正
- プロパティ:オイラー回転の貼り付けを修正
- リソース:小さい画面でも表全体を読むことができるように水平方向のスク롤を追加
- プロファイラー:デフォルトで有効なプロファイルセクションを改善
- シーンのインポート
- メッシュ処理を最適化
- 追加のライトプロパティのインポートを追加
エンジン
- レンダリング
- Sky シェーダーのテクスチャシームを修正
- 最新の Slug Library に更新
- 内部のシャドウ数が更新されていないために発生するシャドウバグを修正
- GPU プロファイリングクエリを改善
- ネガティブアニメーション速度がアニメーションを逆方向に再生するようになりました
- シェーダーは非同期でコンパイルされ、ロード時間がさらに短縮されました
- UASTC 圧縮をサポート
- 今後の機能のためにアニメーションエンジンを切り替え
- 配列アクセスの範囲外によるさまざまなレアクラッシュを体系的に修正
- ライト「attenuation」はより直感的な「intensity」に削除
- Phong
- Ambient 項はアンビエントカラーとディフューズ項を掛け合わせて取得
- ディフューズカラーはディフューズテクスチャと掛け合わせ
- バーテックスカラーはディフューズテクスチャとカラーと掛け合わせ
- デフォルトの光の距離モデルは標準の逆二乗減衰に(古い動作は非推奨ですが、機能チェックボックスでまだ利用可能)
- 基本的な
TONE_MAPPING
機能を追加
- フラット
- バーテックスカラーはカラーとテクスチャと掛け合わせ
- テクスチャストリーミングの CPU 時間を最適化
- レアなテクスチャストリーミングクラッシュを修正
- プロファイラーにさらに多くのプロファイルセクションを追加
ランタイム
- PWA:サービスワーカーによってキャッシュされていないファイルをオフライン使用で修正
- プロファイラーでの潜在的なクラッシュを修正
- 入力タイプ “Head” を修正
- .bin ファイルのデータはロード後に完全に消費され、メモリ使用を改善
- 1つのウェブページで複数のエンジンインスタンスを使用可能になりました
- WebAssembly メモリ使用のデバッグ体験と古い iOS ハードウェアの互換性を向上させるために最大 WebAssembly メモリを 512 MB に制限
- 他の WebAssembly モジュールとの使用を可能にするために WebAssembly を適切にモジュール化
ResizeObserver
を通じてリサイズを処理
JavaScript API
- TypeScript
- クラスボディ内で設定可能なプロパティを直接定義するための
@property.<type>
デコレーターを追加 - API を完全に TypeScript で書き直し
- クラスボディ内で設定可能なプロパティを直接定義するための
PhysXComponent.group
、PhysXComponent.block
など、多くの欠けているプロパティを追加XR.currentReferenceSpace
、XR.currentReferenceSpaceType
、XR.referenceSpaceForType
を追加- WebXR 関連の状態にアクセスするための
XR
とWonderlandEngine.xr
を追加 - 多くの新しい自動テストを追加
- 新しい
Color
プロパティタイプを追加 - Mesh、Material、Texture、Animation、Skin 用の equals() メソッドを追加
LightComponent.setColor
を追加_wl_nextUpdate
および_wl_nextFrame
を追加して、コンポーネントの自動テストを可能に- 残りの
LightComponent
プロパティを追加 LightComponent.color
は RGB の3要素のみを返すように- ランタイムおよび API バージョンの互換性チェックを追加
- コンポーネントが登録された際の追加の動作を実行できる
onRegister
を追加 - API のグローバル状態をすべて削除
- カスタムコンポーネントはクラスになりました:
export class CustomComponent extends Component
AnimationComponent.state
が間違った enum 値を返す問題を修正Object3D.lookAt()
を修正し、その動作をドキュメントで明確化Object3D.addComponent(type, otherComponent)
によるコンポーネントの複製を修正Component.destroy()
が破壊のみを行い、オブジェクトからコンポーネントを削除しない問題を修正RayHit.objects
要素が使用されていないインデックスでnull
にならない問題を修正- エディターと一貫したデフォルトパラメータ適用を実施
onXRSupported
コールバックを削除し、WonderlandEngine.arSupported
とWonderlandEngine.vrSupported
がアプリケーションの開始時に利用可能にMaterial.shader
をMaterial.pipeline
にリネーム- コールバック配列(
onSceneLoaded
、onXRSessionStart
など)を新しいEmitter
クラスに置換 onXRSessionStart
はRetainEmitter
になり、すでに XR セッションが実行中であればコールバックを即座にトリガーAnimationComponent.animation
が未設定時に正しくnull
を返すように修正Component.onDestroy
が新しいシーンがロードされた際に呼び出されるようにObject
をObject3D
にリネームして、組み込みの JavaScript タイプと重複しないようにScene.load()
とScene.append()
はasync
に
コンポーネント
- すべてのコンポーネントをクラスに変換
- いくつかのコンポーネントを TypeScript に変換
- トレイルコンポーネントを追加
- プレーン検出コンポーネントを追加
- アンカーコンポーネントを追加
- cursor-target:
add*Function
を廃止し、onClick
、onHover
、onUnhover
、onMove
イベントエミッターを推奨
既知の問題
- WebXR エミュレーター拡張による入力が機能しません
- カスタムコンポーネントがないと、Windows でパッケージングループが発生する可能性があります