WPThumbs
Themes Plugins By purpose By industry Best-of lists Fix it guides
Free Plugin by Rownok Bosunia v2.0.2

ThreeWP

Easily integrate Three.js with WordPress to create and display 3D models and animations.

ThreeWP

The facts

Rating
5★ from 2
Active installs
200+
Price
Free
Last updated
20 Dec 2025
Added
Sep 2024
Requires WP
5.4
Tested up to
WP 6.9.7
Requires PHP
7.4
Downloads
3,087

Our analysis

AI-assisted

ThreeWP is a WordPress plugin that integrates the Three.js library and its addons into your site. It allows you to create and manage custom 3D models, animations, and interactive graphics through a custom bundle file, enabling full control over your 3D content without relying on a CDN.

The plugin requires users to manually add their own Three.js code for implementation, as it does not include built-in shortcodes or settings. This makes it suitable for developers or users with coding knowledge who want to enhance their WordPress themes with 3D graphics.

Best for: Developers or users with coding experience looking to add 3D graphics to their WordPress site.

What it does well

  • Integrates Three.js library and addons
  • Custom bundle file avoids CDN reliance
  • Straightforward installation and activation process
  • Allows full customization with manual code addition
  • Publicly available source code

Where it falls short

  • Requires coding knowledge for full utilisation
  • No built-in shortcodes or settings provided

Verdict

ThreeWP offers a flexible solution for integrating 3D content in WordPress, but it is best suited for those comfortable with JavaScript and custom coding.

From the developer

Rownok Bosunia's own description of ThreeWP, lightly tidied.

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.');
    }
});

NOTE: Destructure THREE and the addons to access from ThreeWP bundle.

Tips

Responsive Design: Adjust the size of the Three.js container or renderer according to your design requirements. Handle window resizing events to keep the 3D content responsive.
Documentation: Refer to the Three.js documentation for detailed information on creating more complex scenes, objects, and animations.

Available Tools in This Plugin

  • THREE
  • Addons:
    • ArcballControls
    • BufferGeometryUtils
    • CameraUtils
    • CCDIKSolver
    • ConvexGeometry
    • ConvexH
    • CSS2DRenderer
    • CSS3DRenderer
    • DecalGeometry
    • DRACOLoader
    • DragControls
    • EdgeSplitModifier
    • EffectComposer
    • FirstPersonControls
    • FlyControls
    • FontLoader
    • GLTFLoader
    • KTX2Loader
    • LDrawLoader
    • Lensflare
    • LensflareElement
    • LightProbeGenerator
    • LightProbeHelper
    • Lut
    • LUT3dlLoader
    • LUTCubeLoader
    • MapControls
    • MeshSurfaceSampler
    • MMDAnimationHelper
    • MMDLoader
    • MMDPhysics
    • MTLLoader
    • OBB
    • OBJLoader
    • OrbitControls
    • ParametricGeometry
    • PCDLoader
    • PDBLoader
    • PointerLockControls
    • PositionalAudioHelper
    • RectAreaLightHelper
    • Rhino3dmLoader
    • SceneUtils
    • SDFGeometryGenerator
    • SkeletonUtils
    • Sky
    • SVGLoader
    • SVGRenderer
    • TeapotGeometry
    • TextGeometry
    • TGALoader
    • Timer
    • TrackballControls
    • TransformControls
    • VertexNormalsHelper
    • VertexTangentsHelper
    • XREstimatedLight

    v2.0.2

    Read the full description on the official page →

Tagged as