PlayCanvasは、3Dアプリケーション開発をより簡単かつ効率的にするため、軽量で宣言的なライブラリ「PlayCanvas React」を発表しました。
PlayCanvas Reactとは
PlayCanvas Reactは、PlayCanvasエンジンのAPIをReact向けに薄くラップしたライブラリです。
これにより、Reactの宣言的なアプローチを活用して、アセット管理、物理演算、ガウシアンスプラッティング、オーディオなどを使用して、複雑な3Dコンテンツを構築できます。
■エディタとエンジンについて
- PlayCanvasエンジンは、すべての基盤となるオープンソースのJavaScriptライブラリです。PlayCanvas Reactは、このエンジンの上にReactフレンドリーな構文を提供する薄いラッパーとして機能します。
- 一方、PlayCanvasエディタは、資産管理、シーンの構成、迅速な反復を可能にする強力なブラウザベースのツールです。Editorは、アセット管理、シーン構成、迅速なイテレーションのためのツール一式を提供しますが、PlayCanvas Reactは、Reactコードの中から3Dコンテンツを構築することに重点を置いています。Reactとそのエコシステムに精通している開発者にとって、PlayCanvas Reactはコード中心のワークフローを提供し、より大規模なReactアプリケーション内で3Dコンテンツを直接構築するのに適しています。
シーンの作成方法の例
@playcanvas/reactを使用すると、エンティティとコンポーネントを使ってシーンを作成できます。これはPlayCanvasのエディタやエンジンと同様の概念です。
エンティティには位置、回転、スケールがあり、シーンの基本的な構成要素となります。一方、コンポーネントはエンティティに動作を追加します。たとえば、<Render/>
コンポーネントをエンティティに追加すると、メッシュをレンダリングできます。
コード例
import { Application, Entity } from '@playcanvas/react';
import { Script as PcScript } from 'playcanvas';
// エンティティを回転させるスクリプト
class Spinner extends PcScript {
update(dt) {
this.entity.rotate(0, this.speed * dt, 0);
}
}
// 初めての @playcanvas/react の例
export const HelloWorld = () => {
const material = useMaterial({ diffuse: 'gray' });
return <Entity>
{/* カメラエンティティを作成 */}
<Entity name='camera' position={[4, 3, 4]}>
<Camera clearColor='#111111' fov={28} />
</Entity>
{/* 回転するボックスのエンティティを作成 */}
<Entity position={[0, 0.5, 0]}>
<Render type='box' material={material} />
<Script script={Spinner} speed={10}/>
</Entity>
</Entity>;
};
PlayCanvas APIに慣れている方は、すぐに活用できるでしょう。エンジンで利用可能なコンポーネントシステム(剛体、衝突、物理演算など)をそのまま使用できます。詳細は入門ガイドを参照してください。
Reactのバックグラウンドを持つ開発者にとっては、既存のReactプロジェクトに簡単に統合できる点も魅力です。
採用例
PlayCanvas Reactは、すでに実際のアプリケーションで採用されています。
例えば、Snap Inc.の「Snap AI (テキストから 3D アセットを生成するアプリ)」は、テキストから3D資産を生成するアプリケーションは、PlayCanvas Reactを基盤として構築されています。
ライセンスについて
PlayCanvas Reactは、MITライセンスの下で完全にオープンソースとして提供されています。
バグの報告、提案、貢献は歓迎されており、GitHubリポジトリでのフィードバックやプルリクエストを通じて行うことができます。
リソース
GitHubリポジトリとその他のリソースは以下のリンクからアクセスできます。
コメント