MindAR JS: MINDAR.IMAGE.MindARThree is not a constructor

1.3k Views Asked by At

I am learning Web AR development using MindAR, https://hiukim.github.io/mind-ar-js-doc/#:~:text=MindAR%20is%20an%20opensource%20web,are%20written%20for%20AFRAME%20integration. I am following a tutorial on Udemy, https://www.udemy.com/course/introduction-to-web-ar-development/learn/lecture/29791078#overview. But it is not working unfortunately for me but for the instructor.

This is my index.html page.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AR Research</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindar-image.prod.js"></script>
    <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindar-image-aframe.prod.js"></script>
    <script src="./main.js" type="module">
    </script>
    <style>
        html, body {
            position: relative;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
    </style>
</head>
<body>

</body>
</html>

As you can see there is not much in the code. I basically embedded the required Mind AR libraries through CDN and add the css styling a little bit and reference my main.js file.

This is my main.js file.

document.addEventListener(`DOMContentLoaded`, () => {
    const start = async () => {
        // create the AR world and specify the marker
        const mindarThree = new window.MINDAR.IMAGE.MindARThree({
            container: document.body,
            imageTargetSec: './groot.mind'
        })
        const { renderer, scene, camera } = mindarThree;

        const geometry = new THREE.PlaneGeometry(1, 1);
        const material = new THREE.MeshBasicMaterial({ color: 0x0000ff, transparent: true, opacity: 0.5 });
        const plane = new THREE.Mesh(geometry, material);

        const anchor = mindarThree.addAnchor(0);
        anchor.group.add(plane);

        await mindarThree.start();

        renderer.setAnimationLoop(() => {
            renderer.render(scene, camera);
        })
    }

    start();
})

When I run the code on the browser, I am getting the following error.

main.js:4 Uncaught (in promise) TypeError: MINDAR.IMAGE.MindARThree is not a constructor
    at start (main.js:4:29)
    at HTMLDocument.<anonymous> (main.js:24:5)

What is wrong with my code and how can I fix it?

1

There are 1 best solutions below

0
On

I had the same problem. The solution is that a different MindAR package needs to be imported, the one that combines MindAR and Three.js:

Use this one:

https://cdn.jsdelivr.net/npm/[email protected]/dist/mindar-image-three.prod.js

Not this one:

https://cdn.jsdelivr.net/npm/[email protected]/dist/mindar-image.prod.js