2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社TORICOAdvent Calendar 2023

Day 21

Blender で制作した3DモデルをWeb上に描画する

Posted at

以前から3Dモデリングに関心があり、Three.js や fiber なんかを触っています。

今回は、自作した3DモデルをWeb上に描画する
ということをやってみました。

Three.js
fiber

Blender チュートリアル

無料で使えるツール Blender を使って
カサハラCG さん のチュートリアルに沿って、実際に3Dモデルを作ってみました。
(めちゃくちゃ分かりやすく大変参考になりました)

完成品

そうして完成したのがこちら↓

burger.png

動画の通りにやって、結構うまく作れました。
Blender 上でレンダリングしたもののスクショになります。

実際に3Dモデルを自分で作ってみて思ったことは、
モデリング用のツールは操作性がかなり独特で、感覚的に扱えるようになるには慣れが必要そうだということ。
今回のバーガーを作るのに数時間はかかりました。。

3次元を表す xyz の向きが Web(というか一般的な認識)とは違っている、など細かな違いもあります。
Blender では、Y軸が上方向ではなく奥に伸びていきます。
数学で出てくる平面のグラフをパタンと奥に倒したイメージですね。

Three.js コード上で3D空間を扱う場合は、横x 縦y 奥z になります。
(一般的な認識に近いはず)

Blender で作ったオブジェクトは色んな形式で書き出しが可能です。
今回は扱いやすいとされている、GLTF 形式で書き出しました。

Three.js でロードして表示する

3Dモデルは、fiber の useLoader で読み込み、キャンバス上に描画できます。
gltf の他にも、fbx や obj 形式にも対応しています。

import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";

const Model = () => {
  const gltf = useLoader(GLTFLoader, "./Poimandres.gltf");
  return (
    <>
      <primitive object={gltf.scene} scale={0.4} />
    </>
  );
};
<Canvas>
  <Model />
</Canvas>

早速Webページに表示してみると、、

Blender 上では照明やら何やらで結構盛ることができたが、
Web上にレンダリングしてみると、いまひとつな仕上がりに。

screencapture.gif

今回の動画はチュートリアル用だったこともあり、表面の素材は細かく指定してなく、質感がプラスティックっぽくなっていました。
マテリアル(表面素材)の設定が重要だと気付かされました。
光の反射を設定するだけでも結構変わってきそう。
上に乗ってるゴマのパーティクルや、チーズの波形も消えてます。
Blender 上のエフェクトは書き出し時にすべて反映されるわけではないみたい。
この辺はもっと触ってみる必要がありそう。

所管

Three.js でコードで作り込むより楽にいくかと思ったが、そう簡単にもいかなそうでした。
Web上で見栄え良く表示させるには、結構作り込む必要があるなぁと。

ブラウザゲームとか作ってみたい。。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?