0
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?

✨ Three.jsとGSAPで作る没入型VRウェブサイト構築ガイド 🚀

Last updated at Posted at 2025-03-14

🚀【初心者必見】Three.js × GSAPで実現する!没入型VRウェブサイトの作り方完全ガイド🌐

タグ提案#Three.js #GSAP #VR #Web制作 #初心者向け #JavaScript

こんにちは😊
株式会社プロドウガ@YushiYamamotoです!
らくらくサイトの開発・運営を担当しながら、React.js・Next.js専門のフリーランスエンジニアとしても活動しています❗️

最近、クライアントから「もっとインタラクティブで没入感のあるウェブサイトを作りたい!」というリクエストが増えています。そこで今回は、初心者でも簡単に取り組めるように、Three.jsとGSAPを使ったVR風のウェブサイト制作方法を徹底解説します✨

See the Pen VR企業向けリッチアニメーションサンプル by Yushi Yamamoto (@yamamotoyushi) on CodePen.

🎯 今回作るもの

以下の要素を備えた没入型VRウェブサイトを作成します:

  • 🌌 Three.jsによる3D背景エフェクト
  • 🎞️ GSAPによる滑らかなアニメーション
  • 📜 パララックス効果でスクロール時に奥行きを演出
  • 📱 レスポンシブ対応のインタラクティブUI

完成イメージはこんな感じです:

+-------------------------------------+
| 🚀 没入型VR体験の未来               |
| 最先端技術で創る新しい世界✨        |
|                                     |
|     [3Dオブジェクトが浮遊🌟]        |
|                                     |
+-------------------------------------+
| 🔍 製品紹介                         |
| [VRヘッドセット] [モーションコントローラー] [開発キット] |
+-------------------------------------+
| 💡 特徴                             |
| [高解像度ディスプレイ] [低遅延レスポンス] [長時間バッテリー]|
+-------------------------------------+

🛠️ 必要なライブラリとツール

今回使用するライブラリは以下の通りです(CDN経由で読み込みます):

  • Three.js:3Dグラフィックス
  • GSAP:アニメーション制御
  • jQuery:DOM操作
  • Rellax.js:パララックス効果
  • Waypoints:スクロール検知
  • Slick:カルーセル表示
  • Magnific Popup:ライトボックス表示

📌 実装手順とフロー

以下の流れで実装を進めます。


🔧 実装手順詳細

Step1: HTML構造作成📄

まずは基本的なHTML構造を用意します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>没入型VR体験</title>
  <!-- ライブラリCSS -->
  <link rel="stylesheet" href="style.css">
  <!-- ライブラリJSはbody末尾で -->
</head>
<body>
  <canvas id="vr-bg"></canvas>
  <header class="hero">
    <h1>没入型VR体験の未来</h1>
    <p>最先端技術で創る新しい世界</p>
  </header>
  <!-- 他セクション省略 -->
  
  <!-- JSライブラリ -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js"></script>
  <script src="script.js"></script>
</body>
</html>

🎨 CSSスタイル(抜粋)

body {
  margin:0;
  overflow-x:hidden;
  background-color:#121212;
}

#bg-canvas {
  position:fixed;
  top:0; left:0;
  width:100%;
  height:100%;
}

🌌 Three.jsで幻想的な3D背景を作ろう!

Three.jsを使って宇宙空間に浮かぶパーティクル背景を作ります。

Three.js背景コード
// Three.js 背景初期化関数
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight,0.1,1000);
const renderer = new THREE.WebGLRenderer({canvas:document.getElementById('bg-canvas'),alpha:true});
renderer.setSize(window.innerWidth,window.innerHeight);

// パーティクル生成
const particlesGeometry=new THREE.BufferGeometry();
const particlesCount=1500;
const positions=new Float32Array(particlesCount*3);
for(let i=0;i<particlesCount*3;i++){
positions[i]=(Math.random()-0.5)*10;
}
particlesGeometry.setAttribute('position',new THREE.BufferAttribute(positions,3));
const particlesMaterial=new THREE.PointsMaterial({size:0.02,color:0xffffff});
const particles=new THREE.Points(particlesGeometry,particlesMaterial=new THREE.PointsMaterial({color:0xffffff,size:0.02}));
scene=new THREE.Scene();
scene.add(particlesMesh=new THREE.Points(particlesGeometry,particlesMaterial));

// カメラ設定
camera=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);
camera.position.z=5;

// アニメーションループ
function animate(){
 requestAnimationFrame(animate);
 particlesMesh.rotation.y+=0.0005;
 renderer.render(scene,camera);
}
animate();

💡 パーティクル数はデバイス性能に応じて調整しましょう。モバイルでは少なめ(500〜1000個)がおすすめ!

🎞️ GSAPで滑らかなアニメーションを追加!

GSAPでタイトルや製品紹介などに動きをつけます。

gsap.from('.hero h1',{y:50,opacity:0,duration:1});
gsap.from('.product-item',{scrollTrigger:{trigger:'.products',start:'top center'},y:100,opacity:0,duration:1,stagger:.2});

GSAPのstaggerオプションを使うと、複数要素が順番に表示されて動きが自然になります✨。

📜 パララックス効果で奥行きを演出!

Rellax.jsを利用してスクロール時に奥行きを感じさせましょう。

<div class="rellax" data-rellax-speed="-2">ゆっくり動く要素</div>
<div class="rellax" data-rellax-speed="3">速く動く要素</div>
// Rellax初期化(速度調整可能)
new Rellax('.rellax');

📱 レスポンシブ対応も忘れずに!

CSSメディアクエリやJavaScriptで画面サイズごとの調整を行います。

モバイル環境では負荷軽減のため、パーティクル数やアニメーション量を減らしましょう。

📝 完成サンプルはこちらから確認できます👇

👉 CodePenサンプルを見る


最後に:業務委託のご相談を承ります

私は業務委託エンジニアとしてWEB制作やシステム開発を請け負っています。最新技術を活用したレスポンシブなWebサイト制作、インタラクティブなアプリケーション開発、API連携など幅広いご要望に対応可能です。

「課題解決に向けた即戦力が欲しい」「高品質なWeb制作を依頼したい」という方は、お気軽にご相談ください。一緒にビジネスの成長を目指しましょう!

👉 ポートフォリオ

🌳 らくらくサイト

0
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
0
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?