ベータ版のSplineを使って3DCGをWebで簡単に扱う

## この記事の概要

Splineという3Dデザインツールがあります。
3Dで作成したデザインをコードとして出力し、Webコンテンツとしても使えます。

アルファ版だった頃に記事を書いたこともあるのですが、今ではベータ版になっているようです。
当時から色々変わっていそうだったので、導入の仕方を記事にしてみます。

https://qiita.com/xrxoxcxox/items/da3a8f482492c11b4d81

## インストール&アカウント登録

まずはSplineのサイトに訪れて、Appをダウンロードします。
ヘッダーに`Download`のリンクがあるのでクリックし、macOS(m1), macOS(intel), Windowsから選択してダウンロードしましょう。
私はmacOSを使っているので、これ以降説明のスクリーンショットやショートカットキーはmacOSのものです。

ちなみにブラウザ版もあります。

https://spline.design/

ダウンロードが完了したら画面の指示に従って登録します。
よくある感じの流れです。

1. Googleアカウントかメールアドレスで登録
1. 名前の登録
1. 使用する用途の選択
1. 職種などの選択
1. 3Dツールの経験の有無の選択
1. アップデートの受け取りの選択
1. 有料で登録するかどうかの選択

最後の有料無料の選択ですが、無料でも一通りは使えるようです。
今回は`Maybe later`で進みましょう。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/99d7ecff-3337-1633-9904-018d4c8fd57a.png)

ホーム画面が開きます（正しい名称が分からないのですが、便宜上この画面をホーム画面と呼びます）。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/e8e29d0c-1d0c-889a-add4-a393ffbe3418.png)

登録はここまでで完了です。

## チュートリアル

ホーム画面の`Watch tutorials`を押すとチュートリアルの動画がたくさん出てきます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/ccf56342-7406-7756-bbf2-b2c9c796d9d0.png)

色々なものがありますし、1つ1つの動画がそこまで長くないので楽しんで見れると思います。
ざっと確認したところ順不同な感じだったので、気になるものから見てみると良いでしょう。

それにしてもこの量、ありがたいですがさすがに多いです。
今回はとにかく「Splineから出力したデータをブラウザで使う」に焦点を当てて説明します。

## ライブラリ

左サイドバーの`Library`を開くと、既に作成されたデータがたくさん用意されています。
1番左上にある`Mini Room - Art`をクリックしてみましょう。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/580edf7c-5eb0-ed55-f9c6-1b74934b58c0.png)

ファイルが複製されて、開きました。
`option`キーを押しながらドラッグすると回転、トラックパッドで視点移動などができます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/8bd91e37-9a80-90ea-ead5-3d4eb705ff0e.png)

ツールの使い方は色々ありますが、今回は省きます。
このデータをWebで見れるようにします。

## エクスポート

編集画面上部にある`Export`をクリックすると設定用のパネルが開きます。
1番楽なのは次の画像の❶で示したコードをコピーすることなのですが、自前のデータとして配信したい場合は❷からダウンロードしておきます。
作業自体はほぼ変わらないのでお好きな方をどうぞ。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/6327f83d-3ee3-916c-e4b8-2c679da6156b.png)

## コードの設定

まずは必要ななモジュールをインストールします。

```shell
npm i @splinetool/runtime
```

https://www.npmjs.com/package/@splinetool/runtime

HTML内に`<canvas id="canvas3d"></canvas>`を用意した上で、JavaScriptファイルに以下のコードを記載します（これが先ほどの❶のコードです）。

```javascript
import { Application } from '@splinetool/runtime';

const canvas = document.getElementById('canvas3d');
const app = new Application(canvas);
app.load('https://prod.spline.design/FILE_ID/scene.splinecode');
```

もし、❷のボタンからzipをダウンロードしていた場合、展開して中に入っている`scene.splinecode`をプロジェクトのディレクトリに配置します。
その上でコードを書き換えます。

```diff_javascript
  import { Application } from '@splinetool/runtime';

  const canvas = document.getElementById('canvas3d');
  const app = new Application(canvas);
- app.load('https://prod.spline.design/FILE_ID/scene.splinecode');
+ app.load('path/to/scene.splinecode');
```

上記により、ブラウザ上で触れる3Dコンテンツが仕上がりました。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/7b35bc87-9b67-682a-556c-d880dfcba425.gif)

## 最後に

今回の記事では「いかにして簡単にブラウザで3Dデータを表示するか」だけに焦点を当てました。
そのため、具体的なSplineの操作自体はほぼ触れられていません。

マウスカーソルを当てると動くとか、ループするアニメーションとか、Splineではそういうものも作れるので別の記事で紹介できればと思っています。
あとは、ReactやReact Three Fiberでの動かし方にも触れたいです。

---

最後まで読んでくださってありがとうございます！
Twitterでも情報を発信しているので、良かったらフォローお願いします！

https://twitter.com/xrxoxcxox

Devトークでのお話してくださる方も募集中です！

https://jobs.qiita.com/employers/qiita-inc/dev_talks/489