リリース 1.0.0

Jonathan Hale

完全な変更履歴はこちらをご覧ください。

Wonderland Engine 1.0.0は、将来のバージョンの強力な基盤を築くことを目指しています。

NodeJSとesbuildをバンドリングに統合することで、すべてのプロジェクトをNodeJSベースにしながら、以前の内部バンドラーの利便性を保ちました。また、コンポーネントをnpmパッケージとして共有することがこれまで以上に簡単になりました。

JavaScript APIをTypeScriptで書き直しました。プロジェクトでJavaScriptを使い続けたとしても、より賢い提案をIDEが行ってくれるのが分かるでしょう。しかし、新しい機能を逃すことになります:

@property.string('Hello TypeScript!')
message!: string;

この書き直しで、徹底的なテストスイートを作成し、多くのバグを修正しました。新しいAPIについては、ブログ記事「Wonderland Engine 1.0.0 JavaScript マイグレーション」で詳しく説明しています。

レンダリングにおいては、デフォルトシェーダーのライティングモデルをより直感的なintensity設定を使用するように変更するなど、重要な変更を加えました。これにより、将来的に素晴らしいレンダリング機能への道が開かれます。

Wonderland Editorは、Wonderland Engine開発ワークフローの中核です。Androidデバイス上でプロジェクトを直接起動するための新しい実験的な機能を追加しました。例えば、スタンドアロンVRブラウザにポートフォワードを自動的に設定します。

最後に、オープンウェブは広いオーディエンスにリーチすることを可能にします。デバイスの互換性だけでなく、言語も障害になり得ます。プロジェクトを翻訳し、より広いオーディエンスにリーチするためのツールを追加しました。

完全な変更履歴はこちらをご覧ください。

重大な変更点 

後方互換性を非常に重視しているため、物事を破壊する機会はあまりありません。メジャーバージョンの切り替えにより、クリーンアップをし、正しい状態にするための貴重な機会が得られました。

そのため、慎重に対応しましたが、コミュニティと共に行動しました!あなたのお気に入りのライブラリはすでに最新であり、新しいバージョンでの利用準備ができています。

いくつかの変更点とその背景について以下に示します。この結果に対して、ぜひご意見をお聞かせください。

例: .getTranslationWorld()および.getTransformationWorld()は非常に似ています。IDEの自動補完を使用していても、間違った関数を使っていることに気付かないかもしれません。代わりに、オブジェクトの位置を記述するために「Translation」ではなく「Position」を使用することにしました。

例: 古いAPIでは、すべてがグローバルなWLオブジェクトに保存されていました。これにより、他のライブラリにWonderland Engineを埋め込むことや、1ページで複数のインスタンスを実行することが困難でした。現在では、Wonderland EngineのインスタンスがWonderlandEngineクラスにラップされており、それをいつどのようにインスタンス化するかを完全に制御できます。

変更履歴 

エディター

  • ベンチマークビューを追加
  • WebXRエクスペリエンスの翻訳を支援するローカライゼーションビューを追加
  • エディターがコンポーネントをバンドルする際にtrueに設定されるWL_EDITOR JavaScript マクロを追加
  • カラーピッカーにアルファ値スライダーを追加
  • 画像圧縮のためのETC1S (小サイズ、デフォルト) とUASTC (高品質) の選択を追加
  • Sky MaterialのcolorStop プロパティのデフォルトを追加
  • ローカルデバイスの代わりに接続されたAndroidデバイスでプロジェクトを直接起動するためのデバイスドロップダウンを起動ページに追加(ポートフォワーディングは自動的に設定)
  • パッケージング: 使われていないVRとARボタンSVGを削除
  • Windows: ファイル監視からランダムなエラーメッセージ修正
  • 空のアニメーションを持つアニメーションコンポーネントは実行時に非アクティブ
  • スクリプトとnpmパッケージからコンポーネントを自動検出
  • エディターで追加されたコンポーネントが実行時にundefinedを返す希なバグを修正
  • プロジェクトに様々な変更を加えた際にUI全体がランダムに暗くなるバグを修正
  • 非均一にスケールされた祖先を持つオブジェクトの回転ギズモの動作を修正
  • プロジェクトを切り替えるとクラッシュする問題を修正
  • 一部のFBXファイルのリターゲティング時の問題を修正
  • 一部のFBXファイルでのクラッシュやインポートエラーを修正
  • リターゲティング時に新しいターゲットが見つからないトラックは破棄されるように
  • すべてのカラープロパティのアルファ値を1.0にデフォルト設定
  • 負のテキストコンポーネント間隔値が設定可能に
  • デフォルトの「esbuild」バンドラーに賛成してレガシーJavaScriptバンドラーを削除
  • エントリーポイントスクリプトで指定するようにして「8thwallToken」設定を削除
  • テキストマテリアルにはサムネイルがあります
  • フォントにはサムネイルがあります
  • CLI
    • —importコマンドでシーンがインスタンス化されない問題を修正
    • CIでパッケージングするため、エディターへの資格情報の渡し方としてより安全なメソッドであるトークンを追加
    • ベンチマークフレームワークを追加
  • Linux
    • ファイル監視の修正
    • 修飾キー状態の修正
  • ビュー
    • アセットブラウザ: 削除されたファイルは永久に削除される代わりにシステムのごみ箱フォルダに移動されるように
    • アセットブラウザ: ダブルクリックで開かれるデフォルトアプリケーションの作業ディレクトリはプロジェクトルートに
    • コンソール: エラー、警告、情報のチェックボックス状態はプロジェクトごとに保持されるように
    • コンソール: 水平スクロールを修正
    • プロジェクト設定: エディターサーバーポートを変更する際の大きなラグを修正
    • プロパティ: オイラー回転の貼り付けを修正
    • リソース: 小さな画面でもテーブル全体を読めるように水平スクロールを追加
    • プロファイラー: デフォルトで有効化されているプロファイルセクションの改良
  • シーンインポート
    • メッシュ処理の最適化
    • より多くのライトプロパティのインポートを追加

エンジン

  • レンダリング
    • Skyシェーダーのテクスチャシームを修正
    • 最新のSlugライブラリに更新
  • 内部シャドウ数が更新されていないことによるシャドウバグを修正
  • GPUプロファイリングクエリの改善
  • 負のアニメーション速度でアニメーションが逆再生可能に
  • シェーダーはさらに迅速な読み込み時間のために非同期にコンパイルされるように
  • UASTC圧縮をサポート
  • 今後の機能のためにアニメーションエンジンを切り替え
  • 配列の境界外アクセスによる様々な希なクラッシュを系統的に修正
  • ライトの「attenuation」をより直感的な「intensity」に変更
  • Phong
    • アンビエント項は、アンビエントカラーを拡散項で乗算して取得
    • 拡散カラーは拡散テクスチャで乗算
    • 頂点カラーは拡散テクスチャとカラーで乗算
    • デフォルトのライト距離モデルは標準の逆二乗減衰フェードに (古い動作は非推奨ではありますが、フィーチャーチェックボックスで依然として利用可能)
    • 基本的なTONE_MAPPING機能が追加
  • Flat
    • 頂点カラーはカラーとテクスチャで乗算
  • テクスチャストリーミングのCPU時間を最適化
  • テクスチャストリーミングによる希なクラッシュを修正
  • プロファイラーにより多くのプロファイルセクションを追加

ランタイム

  • PWA: オフライン利用のためにサービスワーカーでキャッシュされていない各種ファイルを修正
  • プロファイラーでの潜在的なクラッシュを修正
  • 入力タイプ「Head」を修正
  • 読み込んだ後、完全に消費された.binファイルデータを破棄するようになり、メモリ使用量を改善
  • 1つのWebページで複数のエンジンインスタンスを使用できるように
  • デバッグ体験を改善し、古いiOSハードウェアとの互換性を考慮し、利用可能なWebAssemblyメモリの最大値を512 MBに引き下げ
  • WebAssemblyが適切にモジュール化され、他の任意のWebAssemblyモジュールと共に使用可能に
  • リサイズはResizeObserverを介して処理

JavaScript API

  • TypeScript
    • クラスボディ内で直接設定可能なプロパティを定義するための@property.<type>デコレータを追加
    • APIを完全にTypeScriptに書き直し
  • PhysXComponent.groupPhysXComponent.blockおよび多くの欠落プロパティを追加
  • XR.currentReferenceSpaceXR.currentReferenceSpaceTypeおよびXR.referenceSpaceForTypeを追加
  • WebXR関連の状態にアクセスするためのXRWonderlandEngine.xrを追加
  • 大量の新しい自動テストを追加
  • 新しいColorプロパティタイプを追加
  • MeshMaterialTextureAnimationSkinの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.objectsnullでないことを修正
  • エディターと一貫してデフォルトのパラメータを適用
  • onXRSupportedコールバックを削除し、WonderlandEngine.arSupportedおよびWonderlandEngine.vrSupportedがアプリケーションの開始時に利用可能に
  • Material.shaderMaterial.pipelineに改名
  • コールバック配列(onSceneLoaded, onXRSessionStart, …)を新しいEmitterクラスに置き換え
  • onXRSessionStartは今やRetainEmitterで、すでにXRセッションが実行中の場合に即時にコールバックをトリガー
  • AnimationComponent.animationは未設定時に適切にnullを返すように
  • Component.onDestroyは新しいシーンが読み込まれるときに呼ばれるように
  • ビルトインJavaScriptタイプを避けるためObjectObject3Dに改名
  • Scene.load()Scene.append()は今やasyncである
  • 混乱を避けるためにTranslation関数をPositionに改名

コンポーネント

  • すべてのコンポーネントをクラスに変換
  • 一部のコンポーネントをTypeScriptに変換
  • トレイルコンポーネントを追加
  • プレーン検出コンポーネントを追加
  • アンカーコンポーネントを追加
  • cursor-target: add*Functionを非推奨とし、onClick, onHover, onUnhover, onMoveイベントエミッターへ

既知の問題

  • WebXRエミュレーター拡張を介した入力は機能しません
  • カスタムコンポーネントが欠落しているとWindowsでパッケージングループが発生する可能性があります
Last Update: October 9, 2023

最新情報をお届けします。