progress
This commit is contained in:
parent
50822a031d
commit
d8b5018cb2
69 changed files with 3302 additions and 3652 deletions
52
ui/src/core/model/camera_model.ts
Normal file
52
ui/src/core/model/camera_model.ts
Normal file
|
@ -0,0 +1,52 @@
|
|||
import { Quaternion, Vector3, PerspectiveCamera, CameraHelper } from "three";
|
||||
import { CoreThreeRepository, UserData } from "../repository/core_three_repository";
|
||||
import { Result } from "../helper/result";
|
||||
import { SceneModelsTypes } from "./scene_models_type";
|
||||
import { Instance } from "./scene_asset";
|
||||
|
||||
export enum CameraTypes {
|
||||
RGB = "RGB",
|
||||
}
|
||||
export class CameraModel implements Instance {
|
||||
type = SceneModelsTypes.CAMERA;
|
||||
constructor(
|
||||
public quaternion: number[],
|
||||
public vector3: Vector3,
|
||||
public name: string,
|
||||
public cameraType: CameraTypes,
|
||||
public width: number,
|
||||
public updateRate: number,
|
||||
public fov: number,
|
||||
public near: number,
|
||||
public far: number,
|
||||
public height: number,
|
||||
public topic: string,
|
||||
public aspect: number,
|
||||
public parent?: string,
|
||||
public fixed?: string
|
||||
) {}
|
||||
update = (coreThreeRepository: CoreThreeRepository) => this.toWebGl(coreThreeRepository);
|
||||
icon: string = "Camera";
|
||||
toWebGl = (coreThreeRepository: CoreThreeRepository) => {
|
||||
const camera = coreThreeRepository.scene.getObjectByName(this.name);
|
||||
|
||||
if (camera) {
|
||||
coreThreeRepository.scene.remove(coreThreeRepository.scene.getObjectByName(this.name + "camera_helper")!);
|
||||
coreThreeRepository.scene.remove(camera);
|
||||
}
|
||||
const perspectiveCamera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);
|
||||
perspectiveCamera.name = this.name;
|
||||
perspectiveCamera.position.copy(this.vector3);
|
||||
perspectiveCamera.quaternion.copy(new Quaternion().fromArray(this.quaternion));
|
||||
const cameraHelper = new CameraHelper(perspectiveCamera);
|
||||
cameraHelper.name = this.name + "camera_helper";
|
||||
perspectiveCamera.userData[UserData.selectedObject] = true;
|
||||
cameraHelper.userData[UserData.selectedObject] = true;
|
||||
coreThreeRepository.scene.add(...[perspectiveCamera, cameraHelper]);
|
||||
};
|
||||
validate = (): Result<string, CameraModel> => {
|
||||
return Result.ok(this);
|
||||
};
|
||||
|
||||
static empty = () => new CameraModel([], new Vector3(0, 0, 0), "", CameraTypes.RGB, 0, 0, 50, 0.1, 2000, 0, "", 0);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue