projects/atft/src/lib/object/mesh/grid-mesh.component.ts
| providers |
provideParent(GridMeshComponent)
|
| selector | atft-grid-mesh |
| template | |
Properties |
Methods |
|
Inputs |
Outputs |
constructor(rendererService: RendererService, parent: AbstractObject3D<any>)
|
|||||||||
|
Parameters :
|
| iterationsX | |
Type : number
|
|
Default value : 30
|
|
| iterationsY | |
Type : number
|
|
Default value : 30
|
|
| offset | |
Type : number
|
|
Default value : 1.05
|
|
| size | |
Type : number
|
|
Default value : 5
|
|
| castShadow | |
Type : boolean
|
|
Default value : true
|
|
|
Inherited from
AbstractMesh
|
|
|
Defined in
AbstractMesh:16
|
|
| depthWrite | |
Type : boolean
|
|
Default value : true
|
|
|
Inherited from
AbstractMesh
|
|
|
Defined in
AbstractMesh:22
|
|
| material | |
Type : string
|
|
|
Inherited from
AbstractMesh
|
|
|
Defined in
AbstractMesh:10
|
|
| materialColor | |
Type : string | number
|
|
Default value : '#5DADE2'
|
|
|
Inherited from
AbstractMesh
|
|
|
Defined in
AbstractMesh:13
|
|
| receiveShadow | |
Type : boolean
|
|
Default value : true
|
|
|
Inherited from
AbstractMesh
|
|
|
Defined in
AbstractMesh:19
|
|
| layer | |
Type : number
|
|
Default value : 0
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:42
|
|
| name | |
Type : string
|
|
Default value : uuidv4()
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:40
|
|
| rotateX | |
Type : number
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:24
|
|
|
Rotation in Euler angles (radians) with order X, Y, Z. |
|
| rotateY | |
Type : number
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:25
|
|
| rotateZ | |
Type : number
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:26
|
|
| scaleX | |
Type : number
|
|
Default value : 1
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:36
|
|
| scaleY | |
Type : number
|
|
Default value : 1
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:37
|
|
| scaleZ | |
Type : number
|
|
Default value : 1
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:38
|
|
| translateX | |
Type : number
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:31
|
|
|
Translate the geometry. This is typically done as a one time operation, and not during a loop. |
|
| translateY | |
Type : number
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:32
|
|
| translateZ | |
Type : number
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:33
|
|
| changed | |
Type : EventEmitter
|
|
|
Inherited from
AbstractObject3D
|
|
|
Defined in
AbstractObject3D:44
|
|
| Protected newObject3DInstance |
newObject3DInstance()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:36
|
|
Returns :
THREE.Mesh
|
| Public applyMaterial |
applyMaterial()
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:50
|
|
Returns :
void
|
| Protected applyShadowProps | ||||||
applyShadowProps(mesh: THREE.Mesh)
|
||||||
|
Inherited from
AbstractMesh
|
||||||
|
Defined in
AbstractMesh:28
|
||||||
|
Parameters :
Returns :
void
|
| Protected getMaterial |
getMaterial()
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:24
|
|
Returns :
THREE.Material
|
| Public ngOnChanges | ||||||
ngOnChanges(changes: SimpleChanges)
|
||||||
|
Inherited from
AbstractObject3D
|
||||||
|
Defined in
AbstractObject3D:33
|
||||||
|
Parameters :
Returns :
void
|
| Public addChild | ||||||
addChild(object: AbstractObject3D<any>)
|
||||||
|
Inherited from
AbstractObject3D
|
||||||
|
Defined in
AbstractObject3D:143
|
||||||
|
Parameters :
Returns :
void
|
| Protected afterInit |
afterInit()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:156
|
|
Returns :
void
|
| Public applyRotation |
applyRotation()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:118
|
|
Returns :
void
|
| Public applyScale |
applyScale()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:135
|
|
Returns :
void
|
| Public applyTranslation |
applyTranslation()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:127
|
|
Returns :
void
|
| Public findByName | ||||||
findByName(name: string)
|
||||||
|
Inherited from
AbstractObject3D
|
||||||
|
Defined in
AbstractObject3D:185
|
||||||
|
Parameters :
Returns :
any
|
| Public getChildren |
getChildren()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:202
|
|
Returns :
Array<AbstractObject3D<any>>
|
| Public getObject |
getObject()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:175
|
|
Returns :
T
|
| Public ngAfterViewInit |
ngAfterViewInit()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:181
|
|
Returns :
void
|
| Public ngOnDestroy |
ngOnDestroy()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:86
|
|
Returns :
void
|
| Public ngOnInit |
ngOnInit()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:97
|
|
Returns :
void
|
| Protected recursionByName | |||||||||
recursionByName(currentNode: AbstractObject3D<any>, name: string)
|
|||||||||
|
Inherited from
AbstractObject3D
|
|||||||||
|
Defined in
AbstractObject3D:192
|
|||||||||
|
Parameters :
Returns :
any
|
| Public removeChild | ||||||
removeChild(object: AbstractObject3D<any>)
|
||||||
|
Inherited from
AbstractObject3D
|
||||||
|
Defined in
AbstractObject3D:160
|
||||||
|
Parameters :
Returns :
void
|
| Public removeChildByName | ||||||
removeChildByName(name: string)
|
||||||
|
Inherited from
AbstractObject3D
|
||||||
|
Defined in
AbstractObject3D:206
|
||||||
|
Parameters :
Returns :
void
|
| Public updateParent |
updateParent()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:111
|
|
Returns :
void
|
| Protected childlren |
Type : Array<AbstractObject3D<any>>
|
Default value : []
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:46
|
| Protected object |
Type : T
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:48
|
import { Component, Input, Optional, SkipSelf } from '@angular/core';
import * as THREE from 'three';
import { RendererService } from '../../renderer/renderer.service';
import { provideParent } from '../../util';
import { AbstractObject3D } from '../abstract-object-3d';
import { AbstractMesh } from './abstract-mesh-3d';
@Component({
selector: 'atft-grid-mesh',
providers: [provideParent(GridMeshComponent)],
template: '<ng-content></ng-content>'
})
export class GridMeshComponent extends AbstractMesh {
@Input()
size = 5;
@Input()
iterationsX = 30;
@Input()
iterationsY = 30;
@Input()
offset = 1.05;
// private translate = (this.iterations * this.offset) / 2;
constructor(
protected override rendererService: RendererService,
@SkipSelf() @Optional() protected override parent: AbstractObject3D<any>
) {
super(rendererService, parent);
}
protected newObject3DInstance(): THREE.Mesh {
const geometry = new THREE.BufferGeometry();
const vertices = [];
const d = this.size;
// Calculate general offset: (0,0) coordinates in the middle of grid
const x0 = -(this.iterationsX * (d * this.offset)) / 2;
const y0 = -(this.iterationsY * (d * this.offset)) / 2;
let x = x0, y = y0;
for (let i = 0; i < this.iterationsX; i++) {
for (let j = 0; j < this.iterationsY; j++) {
// Triangle 1:
vertices.push(x, y, 0);
vertices.push(x + d, y + d, 0);
vertices.push(x, y + d, 0);
// Triangle 2:
vertices.push(x + d, y + d, 0);
vertices.push(x, y, 0);
vertices.push(x + d, y, 0);
y = y + (this.size * this.offset);
}
y = y0;
x = x + (this.size * this.offset);
}
geometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(vertices), 3));
const material = this.getMaterial();
const mesh = new THREE.Mesh(geometry, material);
geometry.computeBoundingBox();
geometry.computeVertexNormals();
this.applyShadowProps(mesh);
return mesh;
}
}