Unable To Render 3d Graphic Using Three.js
Question: Why isn't the 3D graphic rendering? Details: I am trying to load the json format of this graphic in the loading.component.ts file. I am using Angular 2 and Three.js. I'
Solution 1:
You don't have the correct this
inside the loader.load()
callback, which is exactly what the browser is telling you.
var _this = this
loader.load(..., function(obj){ _this.scene.add(obj })
or bind it.
Solution 2:
Thats why you need arrow functions:
import { Component, OnInit } from '@angular/core';
import * as THREE from 'three'
declare var require: any;
@Component({
selector: 'app-loading',
templateUrl: './loading.component.html',
styleUrls: ['./loading.component.css']
})
export classLoadingComponentimplementsOnInit{
"use strict";
scene = new THREE.Scene();
renderer = new THREE.WebGLRenderer();
light = new THREE.AmbientLight(0xffffff);
camera;
box;
renderCallback;
constructor() { }
ngOnInit() {
// size of content this.renderer.setSize( window.innerWidth, window.innerHeight);
// where to render content
document.getElementById("webgl-container").appendChild(this.renderer.domElement);
this.scene.add(this.light);
this.camera = new THREE.PerspectiveCamera(
35, // Field of view (FOV) from top to bottom.
window.innerWidth / window.innerHeight, // boundries of image 1,
1000
);
this.camera.position.set(0, 0, 5);
this.scene.add(this.camera);
var loader = new THREE.ObjectLoader();
loader.load('assets/img/pac-man-threejs/pac-man.json', (obj) => {
this.scene.add(obj);
})
// this.render();this.renderCallback = {
callRender: (this.render).bind(this)
};
this.renderCallback.callRender();
}
render() {
this.renderer.render(this.scene, this.camera);
// requestAnimationFrame(this.render);
requestAnimationFrame(this.renderCallback.callRender);
}
}
Post a Comment for "Unable To Render 3d Graphic Using Three.js"