ThreeWP
ThreeWP is a WordPress plugin that integrates the Three.js library and its addons into your WordPress site using a custom bundle file. This setup allows you to create and manage custom 3D models, animations, and interactive graphics directly within your WordPress theme or custom JavaScript code. Fea
ThreeWP is a WordPress plugin that integrates the Three.js library and its addons into your WordPress site using a custom bundle file. This setup allows you to create and manage custom 3D models, animations, and interactive graphics directly within your WordPress theme or custom JavaScript code.
Features
- Custom Bundle Integration: Enqueues the Three.js library and essential addons using a custom bundle file, avoiding reliance on a CDN.
- Easy Setup: Straightforward installation and activation process.
- Custom Integration: No built-in shortcodes or settings; users add their own Three.js code for full customization.
Source Code
The source code for the minified JavaScript bundle file used in this plugin is publicly available at the following URL: https://github.com/rondevs/threejs-custom-bundler
Usage
After activating the plugin, Use the [use_threewp] shortcode to enable Three.js for specific pages. Three.js and its addons will be available for use in your theme or custom JavaScript files. You need to manually add your Three.js code to create and manage 3D content.
Example Usage
Add Custom JavaScript: – Add your Three.js initialization and rendering code to your theme’s JavaScript file or use a custom script. Here’s a basic example:
document.addEventListener('DOMContentLoaded', function () { if (typeof ThreeWP !== 'undefined') { // Destructure THREE and THREE_ADDONS from ThreeWP const { THREE, OrbitControls } = ThreeWP; // Create a scene const scene = new THREE.Scene(); // Setup a camera const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000, ); // Setup a renderer const renderer = new THREE.WebGLRenderer(); // Give the renderer a width and height renderer.setSize(window.innerWidth, window.innerHeight); // Append the renderer into the html body document.body.appendChild(renderer.domElement); // Set camera position camera.position.z = 2; // Load a texture const textureLoader = new THREE.TextureLoader(); const texture = textureLoader.load( 'https://threejsfundamentals.org/threejs/resources/images/wall.jpg', ); // Replace with your image URL // Create geometry const geometry = new THREE.BoxGeometry(1, 1, 1); // Create material const material = new THREE.MeshStandardMaterial({ map: texture }); // Combine into mesh const sphere = new THREE.Mesh(geometry, material); scene.add(sphere); const light = new THREE.AmbientLight(0xffffff); scene.add(light); // Set up OrbitControls const controls = new OrbitControls( camera, renderer.domElement, ); // Optional: Adjust controls settings (e.g., damping, auto-rotation) controls.enableDamping = true; // Adds smoothness when dragging controls.dampingFactor = 0.03; controls.autoRotate = true; controls.autoRotateSpeed = 2; function animate(t = 0) { requestAnimationFrame(animate); controls.update(); renderer.render(scene, camera); } animate(); // Responsive window.addEventListener('resize', () => { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }); } else { console.error('Three.js could not be loaded.'); } });