新增相机限制

This commit is contained in:
2026-05-20 16:40:47 +08:00
parent 8dc9371cc5
commit b5b70251e2
7 changed files with 177 additions and 78 deletions

View File

@ -29,8 +29,7 @@ export class AppCamera extends Monobehiver {
this.object.panningSensibility = 0;
// 限制垂直角范围,实现上帝视角
// this.object.upperBetaLimit = Tools.ToRadians(60); // 最大垂直角接近90度避免万向锁
// this.object.lowerBetaLimit = Tools.ToRadians(60); // 最小垂直角
this.object.upperBetaLimit = Tools.ToRadians(90); // 最大垂直角接近90度避免万向锁
this.object.position = new Vector3(-0, 10, 0);
this.setTarget(0, 2, 0);

View File

@ -12,7 +12,7 @@ export const AppConfig = {
envPath: '/hdr/sanGiuseppeBridge.env',
intensity: 1.5,
rotationY: 0,
background: true,
background: false,
},
gizmo: {
position: true,

View File

@ -554,6 +554,24 @@ export class AppModel extends Monobehiver {
return undefined;
}
/**
* 获取所有模型的元数据
* @returns 所有模型的元数据数组
*/
getAllModelMetadata(): ModelMetadata[] {
const keys = this.modelDic.Keys();
const metadataList: ModelMetadata[] = [];
for (const key of keys) {
const metadata = this.modelMetadataDic.Get(key);
if (metadata) {
metadataList.push(metadata);
}
}
return metadataList;
}
private getModelTransformTargets(meshes: AbstractMesh[]): AbstractMesh[] {
const meshSet = new Set<AbstractMesh>(meshes);
const rootMeshes = meshes.filter(mesh => !mesh.parent || !meshSet.has(mesh.parent as AbstractMesh));

View File

@ -82,6 +82,18 @@ export class KernelAdapter {
*/
exists: (modelId: string): boolean => {
return this.mainApp.appModel.exists(modelId);
},
/**
* 获取所有模型的元数据
* @returns 所有模型的元数据数组,包含 modelName, modelId, modelControlType 等信息
* @example
* // 获取所有模型
* const allModels = kernel.model.getAllMetadata();
* // 查找特定类型的模型
* const pergola = allModels.find(m => m.modelControlType === 'pergola');
*/
getAllMetadata: (): any[] => {
return this.mainApp.appModel.getAllModelMetadata();
}
};