fayazara/robot-heads
Animated 3D robot heads for React: TV-headed bots with LED faces that show what your agent is doing.
robot-heads – React向けアニメーション3Dロボットヘッド
これは何か
<RobotHead>Reactコンポーネントを提供するnpmパッケージです。このコンポーネントは、2Dキャンバス(WebGLなし)上に様式化されたロボットの頭部を描画し、エージェントの状態(アイドル、思考中、リスニングなど)を反映するようにアニメーションします。
主な機能
- 4つの幾何学的形状 – 長方形、正方形、円、六角形 – すべて同じ画面、アンテナ、耳、動きを共有します。
- 状態駆動の顔 – 各状態(アイドル、思考中、検索中、リスニング中、発話中、作業中、ハッピー、エラー、スリープ中)には、独自のLEDマトリックスフェイス、動きパターン、アンテナライトの色があります。
- カスタマイズ可能な外観 – シェル、トリム、スクリーンの色のプロパティ。サイズ(ピクセル単位)、アニメーション速度、オプションのアンテナ、フロアシャドウ、複数のヘッドを非同期にするための
seed。 - インタラクティブ性 –
interactive(デフォルト)の場合、ヘッドはマウスポインタを追跡し、クリックでホップ/スピンします。prefers-reduced-motionとpausedプロパティを尊重します。 - パフォーマンス重視 – すべてのヘッドが単一のアニメーションループを共有し、タブが非表示のときに一時停止します。同じ形状/サイズのヘッドは、ベイクされたテクスチャを再利用します。
- アクセシブル – キャンバスには
role="img"と現在の状態を説明するaria-labelが設定されます。
仕組み
- ヘッドジオメトリは、角が丸い凸多角形として生成され、3D風メッシュ(耳、アンテナカラー)に旋盤加工されます。各フレームでメッシュが変換され、背面がカリングされ、シンプルなスタジオ照明設定(キーライト、フィルライト、リムライト、スカイドーム)とフィルム風トーンカーブで照らされます。
- フロントスクリーンはLEDマトリックスで、フェイスはシャープにレンダリングされた後、グロー効果のためにブルームされます。
- すべての描画は通常のHTML
<canvas>要素で行われ、重いWebGL依存関係を回避します。
一般的な使用法
import { RobotHead } from 'robot-heads';
function Agent({status}: {status: 'idle' | 'thinking' | 'speaking'}) {
return <RobotHead state={status} size={160} />;
}
プロパティを使用して、形状、色、速度を変更し、アンテナ、シャドウ、インタラクティブ性を有効/無効にできます。
開発とプレイグラウンド
- リポジトリはpnpmワークスペースで、ライブラリは
src/にあり、インタラクティブなプレイグラウンドはsite/(Vite + Cloudflare Worker)にあります。pnpm run devを実行するとプレイグラウンドが起動し、ライブラリへの変更がホットリロードされます。 pnpm run buildでdist/に配布可能なファイルを生成します。
ライセンス
- MITライセンス、著作者:Fayaz Ahmed。
誰が使うか
- AIチャットボット、音声アシスタント、またはインタラクティブなエージェントUIを構築するフロントエンド開発者で、エージェントの現在のアクティビティのための軽量でアニメーション化された視覚的手がかりを求める人。
すべての詳細は、リポジトリのREADMEから直接取得されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト