VRMLLoader unable to load a VRML

I was trying to load a VRML loader through script but getting an error :
Uncaught TypeError: THREE.VRMLLoader is not a constructor
at init (index.html:30)
at index.html:18

Have you actually included THREE.VRMLLoader into your app? This runtime error usually occurs if users miss to include/import external files form the examples directory. Check out how the loader is imported in the official example:

https://threejs.org/examples/webgl_loader_vrml

Ya I have included the VRML loader external files. Below is the script i am using from the threejs GitHub page .

<body>
<script src="js/three.js"></script>
    <script src="js/OrbitControls.js"></script>
<script src="js/VRMLLoader.js"></script>

<script>

var camera, scene, renderer, stats;
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 0.01, 1e10 );
camera.position.z = 6;
scene = new THREE.Scene();
scene.add( camera );
// light
var dirLight = new THREE.DirectionalLight( 0xffffff );
dirLight.position.set( 200, 200, 1000 ).normalize();
camera.add( dirLight );
camera.add( dirLight.target );
var loader = new THREE.VRMLLoader();
loader.load( 'Models/house.wrl', function ( object ) {
scene.add( object );
} );
// renderer
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
// controls
var controls = new OrbitControls( camera, renderer.domElement );
//
stats = new Stats();
document.body.appendChild( stats.dom );
//
window.addEventListener( 'resize', onWindowResize, false );
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
stats.update();
}
</script>

Can you please verify in the network tab of your browser’s dev console if VRMLLoader.js is actually loaded?

Here is the snapshot of the network tab

Um, can you please share your entire code as a live example: https://jsfiddle.net/f2Lommf5/

Or maybe as a github repository?

HI @Mugen87 thanks for helping me out and i have already given the whole code in my previous comments. I am adding it again. I have taken this code from one of the tutorial i found on YouTube:

<script src="js/three.js"></script>
<script src="js/OrbitControls.js"></script>
<script src="js/VRMLLoader.js"></script>
<script> 
    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);

    window.addEventListener('resize', function () {
        var width = window.innerWidth;
        var height = window.innerHeight;
        renderer.setSize(width, height);
        camera.aspect = width / height;
        camera.updateProjectionMatrix();
    });

    controls = new THREE.OrbitControls(camera, renderer.domElement);
    var loader = new THREE.VRMLLoader();
    var geometry = new THREE.BoxGeometry(1, 1, 1);
    var material = new THREE.MeshBasicMaterial({ color: 0xFFFFFF, wireframe: false });
    //var cube = new THREE.Mesh(geometry, material);
    loader.load('Models/house.wrl', function (object) {
        scene.add(object);
    });
    //scene.add(cube);
    camera.position.z = 6;


    var update = function () {

        //cube.rotation.x += 0.01;
        //cube.rotation.y += 0.005;


    };
    var render = function () {
        renderer.render(scene, camera);

    };
    var GameLoop = function () {
        requestAnimationFrame(GameLoop);
        update();
        render();
    };
    GameLoop();
</script>

Sorry, I was asking for a live example. Anyway instead of using this code, try it with this one:

https://threejs.org/examples/webgl_loader_vrml

It’s the one from the official example.

I have tried using the code given in the example and getting the same error.

three.js webgl - loaders - vrml loader
<style>
    body {
        color: #444;
    }

    a {
        color: #08f;
    }
</style>
<script src="js/three.js"></script>
<script src="js/OrbitControls.js"></script>
<script src="js/VRMLLoader.js"></script>
<script type="module">


    //import * as THREE from './js/three.js';

    //import Stats from './js/stats.module.js';

    //import { OrbitControls } from './js/OrbitControls.js';
    //import { VRMLLoader } from './js/VRMLLoader.js';

    var camera, scene, renderer, stats;

    init();
    animate();

    function init() {

        camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.01, 1e10);
        camera.position.z = 6;

        scene = new THREE.Scene();
        scene.add(camera);

        // light

        var dirLight = new THREE.DirectionalLight(0xffffff);
        dirLight.position.set(200, 200, 1000).normalize();

        camera.add(dirLight);
        camera.add(dirLight.target);

        var loader = new THREE.VRMLLoader();
        loader.load('Models/house.wrl', function (object) {

            scene.add(object);

        });

        // renderer

        renderer = new THREE.WebGLRenderer();
        renderer.setPixelRatio(window.devicePixelRatio);
        renderer.setSize(window.innerWidth, window.innerHeight);
        document.body.appendChild(renderer.domElement);

        // controls

        var controls = new OrbitControls(camera, renderer.domElement);

        //

        stats = new Stats();
        document.body.appendChild(stats.dom);

        //

        window.addEventListener('resize', onWindowResize, false);

    }

    function onWindowResize() {

        camera.aspect = window.innerWidth / window.innerHeight;
        camera.updateProjectionMatrix();

        renderer.setSize(window.innerWidth, window.innerHeight);

    }

    function animate() {

        requestAnimationFrame(animate);

        renderer.render(scene, camera);

        stats.update();

    }

</script>

This is the error which i am getting

You have missed some important elements in your code. E.g. You need to include chevrotain.min.js when using THREE.VRMLLoader. You also have missed to add a THREE namespace to OrbitControls. Besides, if you want to use stats.js, you also have to include the library. I’ve removed all references to stats.js for now.

I’ve copied the following file into the examples directory of the three.js repository and everything works fine:

<!DOCTYPE html>
<html lang="en">
	<head>
		<title>three.js webgl - loaders - vrml loader</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
		<link type="text/css" rel="stylesheet" href="main.css">
		<style>
			body {
				color: #444;
			}
			a {
				color: #08f;
			}
		</style>
	</head>

	<body>
		<div id="info">
		<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> -
		vrml format loader test
		<!--model from <a href="http://cs.iupui.edu/~aharris/webDesign/vrml/" target="_blank" rel="noopener">VRML 2.0 Tutorial</a>,-->
		</div>

		<script src="../build/three.js"></script>
		<script src="./js/controls/OrbitControls.js"></script>
		<script src="./js/libs/chevrotain.min.js"></script>
		<script src="./js/loaders/VRMLLoader.js"></script>
		<script>


		//import * as THREE from './js/three.js';

		//import Stats from './js/stats.module.js';

		//import { OrbitControls } from './js/OrbitControls.js';
		//import { VRMLLoader } from './js/VRMLLoader.js';

		var camera, scene, renderer;

		init();
		animate();

		function init() {

			camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 0.01, 1e10 );
			camera.position.z = 6;

			scene = new THREE.Scene();
			scene.add( camera );

			// light

			var dirLight = new THREE.DirectionalLight( 0xffffff );
			dirLight.position.set( 200, 200, 1000 ).normalize();

			camera.add( dirLight );
			camera.add( dirLight.target );

			var loader = new THREE.VRMLLoader();
			loader.load( 'models/vrml/house.wrl', function ( object ) {

				scene.add( object );

			} );

			// renderer

			renderer = new THREE.WebGLRenderer();
			renderer.setPixelRatio( window.devicePixelRatio );
			renderer.setSize( window.innerWidth, window.innerHeight );
			document.body.appendChild( renderer.domElement );

			// controls

			var controls = new THREE.OrbitControls( camera, renderer.domElement );

			//

			window.addEventListener( 'resize', onWindowResize, false );

		}

		function onWindowResize() {

			camera.aspect = window.innerWidth / window.innerHeight;
			camera.updateProjectionMatrix();

			renderer.setSize( window.innerWidth, window.innerHeight );

		}

		function animate() {

			requestAnimationFrame( animate );

			renderer.render( scene, camera );

		}

</script>

	</body>
</html>