Splineで作る3Dオブジェクトのレスポンシブ対応
3Dオブジェクトをサイトに埋め込むだけなら、何もする必要はないのですが、綺麗にレスポンシブさせるにはエクスポート前にstateやeventの設定をする必要があります。
今回は簡易的に「カメラ」を使って調整する方法を紹介します。
1.フレーム設定
モデリングができたら、表示領域の設定をします。
画面左のレイヤーで何も選択していない状態にすると、画面右のオプション画面上部にFrameの項目が表示されます。
画角はデフォルトの「responsive」またAuto ZoomはNoに設定します(理由は下記に記載)。
2.ステート設定
カメラの追加とステート(State)*を設定します。
/ カメラを追加
カメラは上部ツールの左端、オブジェクトの追加から選択できます。
/ カメラの設定
位置や角度はオブジェクトと同じ操作で設定できます。
/ ステートを追加する
Type=:Orthographic(正投影)
Near & Far:デフォルト
Zoom:4(basestate)
Base stateは上記の通りにしてますが、表現の内容によって都度変更する必要はあります。追加したステート「スマホ」に切り替えてZoomの項目に「1.5」と入力。
タブレットも追加したい場合は「2」と入力しておく。
これでステートの設定終わり。
3.イベント設定
ステートが設定できたら、次はイベント(Event)*を設定します。
/ トリガーの設定
レスポンシブ対応させるためにはedit eventから「screen resize」をトリガーとして設定します。
トリガーを設定するとダイアログがこのような形に変化します。
デバイス&ブレイクポイントに対して、先ほど設定したステートを割り振ることができます。
今回は4デバイス(モバイル、タブレット、ラップトップ、デスクトップ)に対応するようにしてみた。
またイベントで幅指定をする際は「〜以下」「〜以上」で指定するよりも、明確な範囲(Between)を決めておくと、切り替えたときに適切な大きさでオブジェクトを表示してくれます。
今回デスクトップ以下のデバイスには範囲指定でイベントが発火するようにしてます。
範囲指定はデバイスの右にある「>」をクリックするとダイアログが表示されます。
/ トランジションの設定
デバイス項目下の「Transition」を押すと秒数やループなどの詳細が設定できます。先に設定したステートをそれぞれ割り振ってみましょう。
今回イージングは全部リニア(linear)に変えて、シークエンスは何も触らないでおきます。これでイベントの設定は終わり。
/ 調整
イベント設定ができたら、ツールバー上の▶️(play)ボタンから画面幅を変更にした際の見え方を確認することができます。
これを確認しながらステートのZoomの値を調整したら終わりです!!
実装用に書き出し(Export)
ステートとイベントの設定ができたら上のツールバーから「Export」を選択、Web から適した形式でコードを書き出してください。
Viewerの場合のデモ
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spline Demo</title>
<style>
body, html {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden; /* スクロールバーを防ぐため */
}
spline-viewer {
width: 100%; /* ビューワーの幅を画面幅に合わせる */
height: 100%; /* ビューワーの高さを画面高に合わせる */
display: block; /* ブロック要素として配置 */
}
</style>
</head>
<body>
<!-- Spline Viewerスクリプトの読み込み -->
<script type="module" src="https://unpkg.com/@splinetool/viewer@1.0.75/build/spline-viewer.js"></script>
<!-- Spline Viewerを使ってSplineプロジェクトを埋め込む -->
<spline-viewer url="https://prod.spline.design/bCgZ6HiBxpCVkUll/scene.splinecode"></spline-viewer>
</body>
</html>
PublicURL(iframe)のデモ
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spline iframe Demo</title>
<style>
body, html {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden; /* スクロールバーを防ぐため */
}
iframe {
width: 100%; /* iframeの幅を画面幅に合わせる */
height: 100%; /* iframeの高さを画面高に合わせる */
border: none; /* iframeの境界線を除去 */
}
</style>
</head>
<body>
<!-- iframeを使ってSplineプロジェクトを埋め込む -->
<iframe src='https://my.spline.design/untitled-86fd91f7ed4c38662f0598d7c5a27efa/' frameborder='0' width='100%' height='100%'></iframe>
</body>
</html>
Webに限らず3Dコンテンツのデザイン実装はコストが嵩みがちで、初めから選択肢から外す事が多いです。しかし、目的に適した表現をする中、少ない手札を捨ててしまうのも避けたい事実。
Splineはそんなわがままな夢をモデリングしてくれるツールだと思います。
早く日本語対応してくれないかしら。