Topics

Damals träumten wir von 3D-Grafiken (WebGL) – Three.js und Blender ausprobiert

  • column

Früher habe ich mir Webseiten angesehen und war fasziniert von Objekten, die im Hero-Bereich herumwirbeln, und von Animationen mit Tiefenwirkung. Damals dachte ich mir: "Das möchte ich auch mal machen!" und habe dann Three.js und Blender ausprobiert.

Bei Liberogic angefangen bin ich mit diesem Traum – aber ehrlich gesagt, arbeite ich heutzutage eher an Business-Anwendungen und headless CMS-Lösungen, also an etwas Solidererem (lacht). Das soll keine Kritik sein, verstehen Sie mich nicht falsch!

Jetzt im vierten Jahr, möchte ich mich dieser alten Leidenschaft für "bewegte Web-Inhalte" wieder zuwenden und die Grundlagen rund um WebGL kurz zusammenfassen.

Was ist WebGL?

WebGL ist eine Technologie zur Darstellung von 3D-Grafiken auf Webseiten und funktioniert in allen gängigen Browsern wie Chrome, Firefox und Safari.

Früher war Flash Player das Standard-Plugin, aber dieses funktionierte auf Smartphones nicht gut.

WebGL hingegen wird nativ unterstützt und kann daher als die Technologie angesehen werden, die 3D-Grafiken im mobilen Zeitalter eröffnet hat.

Es selbst ausprobieren

3D im Browser mit Three.js anzeigen

Three.js ist eine Bibliothek mit verfügbarem Trademark, mit der Sie mit JavaScript ganz einfach 3D-Inhalte erstellen können.

Zunächst benötigen Sie als WebGL-Konzepte einen Renderer, eine Scene und eine Camera.

Der Renderer ist das Hauptobjekt von Three.js. Wenn Sie Scene und Camera an den Renderer übergeben, wird der Teil der 3D-Scene innerhalb des Kamerastumpfes des Renderers als 2D-Bild auf die Canvas gerendert (gezeichnet).

WebGL-Konzept, Renderer, Scene und Camera-Beziehung
const scene = new THREE.Scene();

const camera = new THREE.PerspectiveCamera(
  1000, // 視野角
  window.innerWidth / window.innerHeight, // 側面
  75, // 近く
  1000 // 遠い
);
camera.position.set(0, 0, 400);

//マウスで制御
const controls = new OrbitControls(camera, document.body);

//html側の<canvas id="myCanvas"></canvas>を取得
const renderer = new THREE.WebGLRenderer({
  canvas: document.querySelector("#myCanvas"),
  antialias: true,
});

//setSize()メソッドでサイズを設定
renderer.setSize(window.innerWidth, window.innerHeight);
//背景色も変更可能
renderer.setClearColor("#000")

//htmlの<canvas id="myCanvas"></canvas>へ流し込み
document.body.appendChild(renderer.domElement);

Der 3D-Würfel wird dann mit einem Mesh-Anzeigeobjekt erstellt. Um ein Mesh zu erstellen, benötigen Sie eine Geometrie (Form) und ein Material (Oberflächeneigenschaft).

//ジオメトリ(立方体)
const geometry = new THREE.BoxGeometry(100, 100, 100)

//マテリアル(色)
const material = new THREE.MeshNormalMaterial
const box = new THREE.Mesh(geometry, material);
//Sceneに追加
scene.add(box);

//ライト
const light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(1, 1, 1);
//Sceneに追加
scene.add(light);

Abschließend wird eine Animation hinzugefügt.

Die Implementierung der umgebenden Partikel wird dieses Mal übersprungen!

function animate() {
  requestAnimationFrame(animate);

  box.rotation.x += 0.005;
  box.rotation.y += 0.005;
  renderer.render(scene, camera);
}

animate()

Wenn Sie die konfigurierte Camera, Geometry, Material und Light in der Scene rendern, wird sie im Browser angezeigt.

Videotranskript anzeigen (Japanisch)

00:00 (直方体のジオメトリが3Dレンダリングされてブラウザに表示されている)

3D-Modellierung in Blender erstellen

Blender ist eine Open-Source-Software zur 3D-Produktion, die den gesamten Workflow von 3D-Modellierung, Animation, Rendering, Spieleentwicklung bis zur Videobearbeitung kostenlos abdeckt. Mit Blender allein können Sie jedoch keine WebGL-Websites erstellen.

Wie bei Three.js erstellt man auch in Blender Formen mit Mesh-Objekten und versieht diese mit Materialien für Farbe und Oberflächenbeschaffenheit. Dann passt man die Lichteinfälle und Schattierungen mit Licht an, stellt die Kamera-Position und -Ausrichtung ein und führt das Rendering durch.

Das Mesh-Objekt wird geformt, indem Flächen, Linien und Punkte angepasst werden.
Farben und Texturen werden mit dem Material-Knoten hinzugefügt.

Durch die Kombination von Knoten können Sie Verläufe erzeugen, metallische Effekte kreieren, Leuchten hinzufügen und realistische Oberflächenbeschaffenheiten erstellen.

Referenz: https://www.youtube.com/watch?v=DsNZzUZPhw4

Ein mit Blender erstelltes 3D-Modell mit Three.js im Browser anzeigen

Das in Blender erstellte 3D-Modell wird als .glb-Datei exportiert und in Three.js integriert.

Die Funktionen OrbitControls, GLTFLoader und DRACOLoader werden aus der Three.js-Bibliothek importiert.

OrbitControls ist ein Utility zur Kamerakontrolle mit der Maus, während GLTFLoader und DRACOLoader Utilities zum Laden von 3D-Modellen im GLTF-Format bzw. im DRACO-Format (komprimierte Version) sind.

Ich habe ein in 3D modellierter Apfel im Browser angezeigt!

Allerdings wird bei der Anzeige eines in Blender erstellten Modells im Browser mit Three.js die Farbe und Textur durch Unterschiede in der Rendering-Umgebung und Material-Kompatibilität unterschiedlich dargestellt. Eine kleine Anpassung ist notwendig, um das gewünschte Aussehen zu erreichen.

Videotranskript anzeigen (Japanisch)

00:00 (Blenderで作成したりんごのモデリングをThree.jsでブラウザ表示した様子)

In meinen täglichen Projekten kümmere ich mich hauptsächlich um CMS-Integrationen und Frontend-Design und -Entwicklung von Geschäftsanwendungen, daher habe ich weniger Gelegenheit, mit 3D-Grafiken zu arbeiten.

Aber wenn ich damit herumspielen, merke ich wieder: "Das ist ja wirklich cool."

Vielleicht war es genau diese damalige Faszination für interaktives Web, die mich auch zu modernen Technologien hingezogen hat.

Nun, heute ist wieder Next und Nuxt angesagt!

Zurück auf der Baustelle schaffe ich wieder interaktives Web auf andere Weise. 🚀

Dieser Artikel wurde geschrieben von

Ich konzentriere mich auf Markup und entwickle Frontends mit JavaScript, React und Next.js. Es freut mich immer, wenn die Websites, an denen ich mitgearbeitet habe, erfolgreich veröffentlicht werden! Mein Hobby ist Gitarrespielen. Ich mag Katzen und gebackene Süßkartoffeln 🐱🍠

Hiraicchi

Frontend-Engineer / Eintritt 2022

Artikel dieses Mitarbeiters ansehen

Zuverlässige Teamstruktur und schnelle Reaktionsfähigkeit sind unsere Stärken

Bei Liberogic werden erfahrene Mitarbeiter aktiv bei der Projektförderung eingesetzt, daher erhalten wir hohe Bewertungen von unseren Kunden.
Wir weisen Projektmanager und Direktoren ordnungsgemäß zu und bemühen uns, Projekte reibungslos zu leiten. Wir vermeiden unnötige Kostensteigerungen durch vollständige Bindung und verteilen Ressourcen optimal. Wir sind auch bekannt für die Schnelligkeit bei der Erfassung von Geschäftsinhalten bis zur Erstellung und Einreichung von Angeboten.

Bitte beachten Sie, dass wir keine SES-ähnliche Vor-Ort-Arbeit aktiv durchführen.

Sie können nahezu alle wichtigen Projektmanagement-Tools und Chat-Tools verwenden, wie Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex und mehr.

Konsultieren Sie uns gerne bei Ihren Web-Fragen.

Fallstudien