r3fの周辺ライブラリ 学習メモ
2024/6/21
@react-three/drei
drei
はReact Three Fiber(r3f)
のライブラリで、r3f用の便利なヘルパー関数やコンポーネントを提供してくれるライブラリ。
リポジトリ - https://github.com/pmndrs/drei
たくさんの機能があり、ここに用途や使い方などをまとめていく。
AccumulativeShadowsとRandomizedLight
指定したフレーム数の影を平面のオブジェクト上に蓄積してリアルで滑らかなソフトシャドウを作る。パーフォーマンスの面で優れている。
主にRandaomizedLightコンポーネントと組み合わせて使う。
RandomizedLight コンポーネントは、複数のライトのセットを揺らして、リアルなレイキャストのような影とアンビエントオクルージョンを作り出す。
-
AccumulativeShadows
主なプロパティ
temporal
: フレームごとに影を蓄積するかどうかを指定します。trueにすると高品質な影になりますが、計算コストが高くなる。frames
: 蓄積するフレーム数を指定します。フレーム数が多いほど影が滑らかになるが、その分だけ時間がかかる。alphaTest
: 閾値以下のアルファピクセルを削除scale
: 平面のスケール
-
RandomizedLight
主なプロパティ
amount
: 光源の数。radius
: ライトのjiggleの値、値が大きいほど柔らかい光になるintensity
: 光の強度。ambient
: アンビエントオクルージョン。position
: 光源の位置。bias
: シャドウのバイアスを設定。シャドウのアーティファクトを防ぐために使用。
Center
境界ボックスを計算し、それに応じて子要素をセンタリング。
Decal
ThreeのDecalGeometryを抽象化したもの。デフォルトでは親メッシュをデカールサーフェスとして使用。
デカールボックスはサーフェスと交差する必要があり、交差しない場合は表示されない。
ScrollControls
ScrollControls
は、canvas
の前面にHTMLスクロールコンテナを作成する。
<Scroll>
コンポーネント内に置かれた要素はスクロールの影響を受ける。
useScroll
Hookを使うことで、スクロールオフセットなどのデータを取得することができる。
プロパティ
eps
:number 精度horizontal
:boolean 水平スクロールinfinite
:boolean 無限スクロールpages
:number スクロールエリアの長さを定義、各ページは高さ100%distance
:number スクロールバーの移動距離を増加させる係数damping
:number 摩擦の係数maxSpeed
:number 最大速度を制限
Billboard
常にカメラを向いている<group />
を追加する。
maath
three.js向けの数学ヘルパーのライブラリ
リポジトリ - https://github.com/pmndrs/maath
Easing
Game Programming Gems 4 Chapter 1.10に基づくUnity-smooth-damping関数。これらは、THREE.Vector2D、3D、4D、オイラー(最短経路)、Matrix4、Quaternion、Colorにプリミティブ化された、高速で、リフレッシュレートに依存しない、中断可能なアニメーションプリミティブです。
easing
を使うことで、様々な動きにイージングをつけることができる。