Made a 3D project of the area and want to upload it to the site. Make something like an interactive map. When loading the model in threejs transferred only the model, without textures, shadows, and everything else, please tell me what I did wrong.
HTML
<div id="container"></div>
<script src="js/three.min.js"></script>
<script src="js/loaders/JSONLoader.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="js/libs/MapControls.js"></script>
<script src="js/mainscene.js"></script>
JS
var scene, camera, renderer;
var controls;
var SCREEN_WIDTH, SCREEN_HEIGHT;
var loader, model;
var group = new THREE.Object3D();
var mscale = 10;
var manager = new THREE.LoadingManager();
manager.onLoad = function () {
scene.add(group);
}
var loader = new THREE.JSONLoader(manager);
function init() {
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, .1, 5000);
renderer = new THREE.WebGLRenderer({
antialias: true,
alpha: true
});
renderer.setClearColor( 0x000000, 0 ); // the default
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
controls = new THREE.MapControls( camera, renderer.domElement );
controls.enableDamping = true; // an animation loop is required when either damping or auto-rotation are enabled
controls.dampingFactor = 1;
controls.screenSpacePanning = false;
controls.minDistance = 15;
controls.maxDistance = 80;
controls.maxPolarAngle = Math.PI / 2;
camera.position.x = 0;
camera.position.y = 35;
camera.position.z = 35;
camera.lookAt(scene.position);
h1 = new THREE.HemisphereLight(0xffffff, 0xffffff, 0.3);
h1.position.set(-300,200, -3000);
scene.add(h1);
var s1 = new THREE.SpotLight(0xffffff);
s1.position.set(300, 300, -1000);
scene.add(s1);
var s2 = new THREE.SpotLight(0xffffff);
s2.position.set(-300, 300, 1000);
scene.add(s2);
loader.load(
'json/grass.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/road.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/square.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/still.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/tree.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/less.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/light.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/dark.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
loader.load(
'json/game.json',
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
object.scale.set(mscale, mscale, mscale);
object.position.set(0, 0, 0);
group.add( object );
}
);
$("#container").append(renderer.domElement);
}
function render() {
group.rotation.y += 0.000001;
}
function animate() {
requestAnimationFrame(animate);
render();
renderer.render(scene, camera);
}
init();
animate();
$(window).resize(function () {
SCREEN_WIDTH = window.innerWidth;
SCREEN_HEIGHT = window.innerHeight;
camera.aspect = SCREEN_WIDTH / SCREEN_HEIGHT;
camera.updateProjectionMatrix();
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
});