You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
i'm trying to get a simple canvas to load a simple stl file on an angular project and don't seem to be able to get this to work...
I have a canvas with a viewchild: <canvas #myCanvas></canvas> in my html.
In my .ts file:
import {Component, ViewChild, AfterViewInit} from '@angular/core';
import * as THREE from 'three';
var OrbitControls = require('three-orbit-controls')(THREE)
var STLLoader = require('three-stl-loader')(THREE)
var loader = new STLLoader()
import Scene = THREE.Scene;
import Mesh = THREE.Mesh;
import PerspectiveCamera = THREE.PerspectiveCamera;
import WebGLRenderer = THREE.WebGLRenderer;
import TrackballControls = THREE.TrackballControls;
import {log} from "util";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit{
ngAfterViewInit(): void {
this.myCanvas.nativeElement.style.background = "grey";
this.myCanvas.nativeElement.style.width="1000px"
this.myCanvas.nativeElement.style.height="500px"
}
@ViewChild("myCanvas") myCanvas;
private scene: Scene;
private camera: PerspectiveCamera;
private renderer: WebGLRenderer;
private controls: TrackballControls;
title = 'app works!';
constructor(){
this.init3D();
}
init3D(){
log("init3D")
// renderer
this.renderer = new THREE.WebGLRenderer({alpha: true, canvas: this.myCanvas});
log(""+window.innerWidth+" "+ window.innerHeight )
this.renderer.setSize( window.innerWidth, window.innerHeight );
// scene
this.scene = new THREE.Scene();
this.scene.background = new THREE.Color( 0xFFFFFF );
// camera
this.camera = new THREE.PerspectiveCamera( 35, window.innerWidth / window.innerHeight, 0.01, 10000 );
this.camera.position.set( 113, 111, 113 );
this.scene.add( new THREE.AmbientLight( 0x222222 ) );
this.scene.add( this.camera ); // required, because we are adding a light as a child of the camera
// controls
this.controls = OrbitControls;
// lights
var light = new THREE.PointLight( 0xffffff, 0.8 );
this.camera.add( light );
loader.load('./assets/plate.stl', geometry => {
var material = new THREE.MeshNormalMaterial()
var mesh = new THREE.Mesh(geometry, material)
log(this.scene.toJSON())
this.scene.add(mesh)
})
this.animate();
window.addEventListener( 'resize', this.onWindowResize, false );
}
animate() {
window.requestAnimationFrame(_ => this.animate());
this.camera.lookAt( this.scene.position );
this.renderer.render(this.scene, this.camera);
}
onWindowResize() {
this.camera.aspect = window.innerWidth / window.innerHeight;
this.camera.updateProjectionMatrix();
this.renderer.setSize( window.innerWidth, window.innerHeight );
}
}
I get no errors but there is nothing in my canvas when the page finish to load. What am i missing here?
The text was updated successfully, but these errors were encountered:
i'm trying to get a simple canvas to load a simple stl file on an angular project and don't seem to be able to get this to work...
I have a canvas with a viewchild:
<canvas #myCanvas></canvas>
in my html.In my .ts file:
I get no errors but there is nothing in my canvas when the page finish to load. What am i missing here?
The text was updated successfully, but these errors were encountered: