mirror of
https://github.com/LucasDower/ObjToSchematic.git
synced 2025-03-07 14:06:41 +08:00
Added output info to voxelisation
This commit is contained in:
parent
8f969a8431
commit
dd1fd6e96f
@ -4,9 +4,21 @@ import { Vector3 } from '../vector';
|
||||
import { Mesh } from '../mesh';
|
||||
import { VoxelMesh, VoxelMeshParams} from '../voxel_mesh';
|
||||
import { TextureFiltering } from '../texture';
|
||||
import { StatusHandler } from '../status';
|
||||
|
||||
export abstract class IVoxeliser {
|
||||
public abstract voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh;
|
||||
public voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
const voxelMesh = this._voxelise(mesh, voxelMeshParams);
|
||||
|
||||
StatusHandler.Get.add('info', `Voxel mesh has ${voxelMesh.getVoxelCount().toLocaleString()} voxels`);
|
||||
|
||||
const dim = voxelMesh.getBounds().getDimensions().addScalar(1);
|
||||
StatusHandler.Get.add('info', `Dimensions are ${dim.x.toLocaleString()}x${dim.y.toLocaleString()}x${dim.z.toLocaleString()} voxels`);
|
||||
|
||||
return voxelMesh;
|
||||
}
|
||||
|
||||
protected abstract _voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh;
|
||||
|
||||
protected _getVoxelColour(mesh: Mesh, triangle: UVTriangle, materialName: string, location: Vector3, filtering: TextureFiltering): RGB {
|
||||
const area01 = new Triangle(triangle.v0, triangle.v1, location).getArea();
|
||||
|
@ -12,7 +12,7 @@ const bvhtree = require('bvh-tree');
|
||||
* on each of the principle angles and testing for intersections
|
||||
*/
|
||||
export class BVHRayVoxeliser extends IVoxeliser {
|
||||
public override voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
protected override _voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
const voxelMesh = new VoxelMesh(mesh, voxelMeshParams);
|
||||
const scale = (voxelMeshParams.desiredHeight - 1) / Mesh.desiredHeight;
|
||||
const offset = (voxelMeshParams.desiredHeight % 2 === 0) ? new Vector3(0.0, 0.5, 0.0) : new Vector3(0.0, 0.0, 0.0);
|
||||
|
@ -20,7 +20,7 @@ export class NormalCorrectedRayVoxeliser extends IVoxeliser {
|
||||
private _size!: Vector3;
|
||||
private _offset!: Vector3;
|
||||
|
||||
public override voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
protected override _voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
this._mesh = mesh;
|
||||
this._voxelMesh = new VoxelMesh(mesh, voxelMeshParams);
|
||||
this._voxelMeshParams = voxelMeshParams;
|
||||
|
@ -19,7 +19,7 @@ export class RayVoxeliser extends IVoxeliser {
|
||||
private _scale!: number;
|
||||
private _offset!: Vector3;
|
||||
|
||||
public override voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
protected override _voxelise(mesh: Mesh, voxelMeshParams: VoxelMeshParams): VoxelMesh {
|
||||
this._mesh = mesh;
|
||||
this._voxelMesh = new VoxelMesh(mesh, voxelMeshParams);
|
||||
this._voxelMeshParams = voxelMeshParams;
|
||||
|
Loading…
Reference in New Issue
Block a user