0.0.45 • Published 4 years ago

app3d-three-template v0.0.45

Weekly downloads
12
License
MIT
Repository
github
Last release
4 years ago

DESCRIPTION

The component makes it easy the work to representing 3D scenes in the browser with the Three.js library.

use three.js in an easy way with app3d-three-template

This project was generated with Angular CLI and is designed as a basic template for ThreeJS combined with Angular.

You can find me at https://davidmartinezros.com or contact in the email davidnezan@gmail.com

youtube video

https://youtu.be/Hz9Wz00X554

demo using the component

https://davidmartinezros.github.io/3dThreeTemplateDemo/

how to create a three.js project

You have to import the three.js library and types needed into your project.

npm i three --save
npm i @types/webgl2 --save
npm i @types/offscreencanvas --save

Add the three.js file to your project in the angular.json file.

"scripts": [
  "node_modules/three/build/three.min.js"
],

Add webgl2 and offscreencanvas as types in your tsconfig.app.json file or tsconfig.json file, for RECOGNISE them.

"compilerOptions": {
  "types": [
    "webgl2"
    "offscreencanvas"
  ]
},

how to use this component

You can use it as a component in your project adding the tag in your AppComponent, add the module App3dThreeTemplateModule and define your provider MyRenderService extending the abstract service RenderService.

Like this:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { App3dThreeTemplateModule, RenderService } from 'app3d-three-template';
import { AppComponent } from './app.component';
import { MyRenderService } from './my-service';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    App3dThreeTemplateModule
  ],
  providers: [
    { provide: RenderService, useClass: MyRenderService }
  ],
  bootstrap: [
    AppComponent
  ]
})
export class AppModule { }

Then, you can reimplement extending the abstract service RenderService and implementing the methods createObjects() and renderObjects().

Like this:

import * as THREE from 'three';
import { Injectable } from '@angular/core';
import { RenderService } from 'app3d-three-template';

@Injectable({
  providedIn: 'root'
})
export class MyRenderService implements RenderService {

    private axesHelper: THREE.AxesHelper;
    
    //implement for create objects in scene
    createObjects(scene: THREE.Scene, renderer: THREE.WebGLRenderer, canvas: HTMLCanvasElement, camera: THREE.PerspectiveCamera, light: THREE.AmbientLight) {
      this.axesHelper = new THREE.AxesHelper( 200 );
      scene.add( this.axesHelper );
  
      camera.lookAt(0,0,0);
    }

    //implement for render animation of objects
    renderObjects(scene: THREE.Scene, renderer: THREE.WebGLRenderer, canvas: HTMLCanvasElement, camera: THREE.PerspectiveCamera, light: THREE.AmbientLight) {
      this.axesHelper.rotateX(0.01);
    }
}

Call the component into the html of the AppComponent:

<app3d-three-template></app3d-three-template>

Demo Example

This intro is done with this three.js and the component app3d-three-template.

https://davidmartinezros.com

0.0.44

4 years ago

0.0.45

4 years ago

0.0.43

4 years ago

0.0.41

4 years ago

0.0.42

4 years ago

0.0.40

4 years ago

0.0.38

4 years ago

0.0.39

4 years ago

0.0.37

4 years ago

0.0.36

4 years ago

0.0.35

4 years ago

0.0.34

4 years ago

0.0.33

4 years ago

0.0.32

4 years ago

0.0.31

4 years ago

0.0.30

4 years ago

0.0.29

4 years ago

0.0.27

4 years ago

0.0.28

4 years ago

0.0.26

4 years ago

0.0.24

4 years ago

0.0.25

4 years ago

0.0.22

4 years ago

0.0.23

4 years ago

0.0.20

4 years ago

0.0.21

4 years ago

0.0.15

4 years ago

0.0.16

4 years ago

0.0.17

4 years ago

0.0.18

4 years ago

0.0.19

4 years ago

0.0.13

4 years ago

0.0.14

4 years ago

0.0.10

4 years ago

0.0.11

4 years ago

0.0.12

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago