tinybim
v0.0.73
Published
一个bim轻量化引擎,基于WebGPU
Downloads
1,597
Readme
官方网站 https://tinybim.cn
//测试天地图Key,请求次数有限,请自行申请
const keys: string[] = ["26eb0c7b03694c6fe26d61fb85ba12fe"];
export async function load_tiny_app(loaders: IFileResolver[], div: HTMLDivElement, store: IStore = null) {
if(!(navigator as any)?.gpu){
window.location.href ="https://tinybim.cn/notsupport";
return;
}
if (!loaders || loaders.length == 0) {
return null;
}
const app = new TinyApp({ recordable: true, asset_manager: new AssetManager() });
console.log("TinyBIM version:",app.version);
await app.init(div);
const win = app.default_window;
win.selection.selection_mode = SelectionMode.element;
win.active();
const tasks: Promise<void>[] = [];
const len = loaders.length;
for (let i = 0; i < len; i++) {
tasks.push(load_model(app, loaders[i], store));
}
await Promise.any(tasks);
const lerc_url = "/lerc-wasm.wasm";
const gis_manager = win.gis_manager;
gis_manager.set_terrain_loader(new CachedArcgisTerrainLoader(lerc_url));
gis_manager.set_img_loader(new CachedTiandituLoader(keys));
const menu = new TbContextMenuUI(win);
menu.add_default();
menu.install();
const bk = new Background();
bk.type = BackgroundType.skybox;
bk.skybox = "天空1";
win.background = bk;
win.set_env("天空1");
win.render_mode = RenderMode.texture;
return app;
}
async function load_model(app: TinyApp, loader: IFileResolver, store: IStore = null) {
const model = app.create_model();
if (store) {
await model.load(loader, store);
}
else {
await model.load(loader);
}
const wnd = app.default_window;
if (model.file_type != FileType.Dwg) {
const mv = model.views.find(v => v.type == ModelViewType.ThreeD) as IView;
if (mv) {
await wnd.attach_view(mv);
}
}
else {
const mv = model.views[0];
if (mv) {
await wnd.attach_view(mv);
}
}
}
更多示例 https://github.com/tinybim/Samples
