This commit is contained in:
@ -1 +1 @@
|
|||||||
VITE_PUBLIC = https://cdn.files.zguiy.com/studio/
|
VITE_PUBLIC = ./
|
||||||
@ -1,10 +1,12 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh-CN">
|
<html lang="zh-CN">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>SDK 全局挂载加载示例</title>
|
<title>SDK 全局挂载加载示例</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<canvas id="renderDom"></canvas>
|
<canvas id="renderDom"></canvas>
|
||||||
|
|
||||||
@ -16,24 +18,32 @@
|
|||||||
container: 'renderDom',
|
container: 'renderDom',
|
||||||
modelUrlList: ['./public/model/model.glb'],
|
modelUrlList: ['./public/model/model.glb'],
|
||||||
env: { hdrPath: '/hdr/my.env', intensity: 1.2, rotationY: 0.3 },
|
env: { hdrPath: '/hdr/my.env', intensity: 1.2, rotationY: 0.3 },
|
||||||
onSuccess: () => console.log('SDK initialized (global)'),
|
|
||||||
onError: (err) => console.error('SDK init error', err),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function startSdk() {
|
console.log(window.faceSDK , window.faceSDK.kernel);
|
||||||
const kernel = window.faceSDK && window.faceSDK.kernel;
|
|
||||||
if (!kernel) {
|
const kernel = window.faceSDK && window.faceSDK.kernel;
|
||||||
console.error('SDK kernel not loaded');
|
kernel.init(config);
|
||||||
return;
|
|
||||||
}
|
|
||||||
kernel.init(config);
|
kernel.on('model:load:progress', (data) => {
|
||||||
}
|
console.log('模型加载事件', data);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
kernel.on('model:loaded', (data) => {
|
||||||
|
console.log('模型加载完成', data);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
kernel.on('model:click', (data) => {
|
||||||
|
console.log('模型点击事件', data);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
if (document.readyState === 'complete') {
|
|
||||||
startSdk();
|
|
||||||
} else {
|
|
||||||
window.addEventListener('load', startSdk);
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
// import { kernel } from 'https://sdk.zguiy.com/zt/assets/index.js';
|
// import { kernel } from 'https://sdk.zguiy.com/zt/assets/index.js';
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
container: 'renderDom',
|
container: document.querySelector('#renderDom'),
|
||||||
modelUrlList: ['/public/model/model.glb'],
|
modelUrlList: ['/public/model/model.glb'],
|
||||||
env: { envPath: '/public/hdr/hdr.env', intensity: 1.2, rotationY: 0.3 },
|
env: { envPath: '/public/hdr/hdr.env', intensity: 1.2, rotationY: 0.3 },
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { ArcRotateCamera } from '@babylonjs/core/Cameras/arcRotateCamera';
|
|||||||
import { Vector3 } from '@babylonjs/core/Maths/math.vector';
|
import { Vector3 } from '@babylonjs/core/Maths/math.vector';
|
||||||
import { Tools } from '@babylonjs/core/Misc/tools';
|
import { Tools } from '@babylonjs/core/Misc/tools';
|
||||||
import { Monobehiver } from '../base/Monobehiver';
|
import { Monobehiver } from '../base/Monobehiver';
|
||||||
|
import { AppConfig } from './AppConfig';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 相机控制类- 负责创建和控制弧形旋转相机
|
* 相机控制类- 负责创建和控制弧形旋转相机
|
||||||
@ -17,7 +18,7 @@ export class AppCamera extends Monobehiver {
|
|||||||
/** 初始化相机 */
|
/** 初始化相机 */
|
||||||
Awake(): void {
|
Awake(): void {
|
||||||
const scene = this.mainApp.appScene.object;
|
const scene = this.mainApp.appScene.object;
|
||||||
const canvas = this.mainApp.appDom.renderDom;
|
const canvas = AppConfig.container;
|
||||||
if (!scene || !canvas) return;
|
if (!scene || !canvas) return;
|
||||||
|
|
||||||
// 创建弧形旋转相机:水平角70度,垂直角80度,距离5,目标点(0,1,0)
|
// 创建弧形旋转相机:水平角70度,垂直角80度,距离5,目标点(0,1,0)
|
||||||
|
|||||||
@ -6,7 +6,7 @@ type ErrorCallback = ((error?: unknown) => void) | null | undefined;
|
|||||||
* 共享运行时配置对象
|
* 共享运行时配置对象
|
||||||
*/
|
*/
|
||||||
export const AppConfig = {
|
export const AppConfig = {
|
||||||
container: 'renderDom',
|
container: document.querySelector('#renderDom') as HTMLCanvasElement,
|
||||||
modelUrlList: [] as string[],
|
modelUrlList: [] as string[],
|
||||||
env: {
|
env: {
|
||||||
envPath: '/hdr/sanGiuseppeBridge.env',
|
envPath: '/hdr/sanGiuseppeBridge.env',
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { Engine } from '@babylonjs/core/Engines/engine';
|
import { Engine } from '@babylonjs/core/Engines/engine';
|
||||||
import { Monobehiver } from '../base/Monobehiver';
|
import { Monobehiver } from '../base/Monobehiver';
|
||||||
|
import { AppConfig } from './AppConfig';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 渲染引擎管理类 - 负责创建和管理3D渲染引擎
|
* 渲染引擎管理类 - 负责创建和管理3D渲染引擎
|
||||||
@ -15,7 +16,7 @@ export class AppEngin extends Monobehiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Awake(): void {
|
Awake(): void {
|
||||||
this.canvas = this.mainApp.appDom.renderDom;
|
this.canvas = AppConfig.container;
|
||||||
if (!this.canvas) {
|
if (!this.canvas) {
|
||||||
throw new Error('Render canvas not found');
|
throw new Error('Render canvas not found');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,7 +44,7 @@ export class MainApp {
|
|||||||
* @param config 配置对象
|
* @param config 配置对象
|
||||||
*/
|
*/
|
||||||
loadAConfig(config: any): void {
|
loadAConfig(config: any): void {
|
||||||
AppConfig.container = config.container || 'renderDom';
|
AppConfig.container = config.container ;
|
||||||
AppConfig.modelUrlList = config.modelUrlList || [];
|
AppConfig.modelUrlList = config.modelUrlList || [];
|
||||||
AppConfig.env = config.env;
|
AppConfig.env = config.env;
|
||||||
}
|
}
|
||||||
|
|||||||
15
src/main.ts
15
src/main.ts
@ -37,23 +37,10 @@ const kernel = {
|
|||||||
init: async function (params: InitParams): Promise<void> {
|
init: async function (params: InitParams): Promise<void> {
|
||||||
if (!params) { console.error('params is required'); return; }
|
if (!params) { console.error('params is required'); return; }
|
||||||
|
|
||||||
if (params.apiConfig) {
|
|
||||||
await configurator.init(params.apiConfig);
|
|
||||||
if (params.apiConfig.name) {
|
|
||||||
const userInfo = await auth.login(params.apiConfig.name);
|
|
||||||
if (!userInfo) {
|
|
||||||
console.error('failed to fetch user');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mainApp = new MainApp();
|
mainApp = new MainApp();
|
||||||
mainApp.loadAConfig({
|
mainApp.loadAConfig({
|
||||||
container: params.container || 'renderDom',
|
container: params.container || document.querySelector(params.container),
|
||||||
modelUrlList: params.modelUrlList || [],
|
modelUrlList: params.modelUrlList || [],
|
||||||
success: params.onSuccess ?? null,
|
|
||||||
error: params.onError ?? null,
|
|
||||||
env: params.env
|
env: params.env
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user