跳到主要内容

Cesium

osgb 转 3dtiles

参考资料:

https://blog.csdn.net/qq_36377037/article/details/86592258

cmd 进入 e 盘 map 文件夹下,找到 3dtile.exe 所在的文件夹

3dtile.exe -f osgb -i E:\Data\倾斜摄影\hgc -o E:\Data\倾斜摄影\hgc_test

Rust 社区公开的第三方包都集中在 crates.io 网站上面,他们的文档被自动发布到 doc.rs 网站上,Rust 提供了非常方便的包管理器 cargo。为了更快速下载第三方包,我们需要把 crates.io 换国内的镜像源

设置 rustup 的代理

使用中科大的镜像源

设置系统环境变量:

RUSTUP_DIST_SERVER: http://mirrors.ustc.edu.cn/rust-static

RUSTUP_UPDATE_ROOT: http://mirrors.ustc.edu.cn/rust-static/rustup

设置依赖源的代理

C:/Users/<用户名>/.cargo目录下新建一个文本文件 config(没有后缀)

使用中科大镜像源,添加内容如下:

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

或者使用阿里云镜像源,添加内容如下:

[source.crates-io]
replace-with = "rustcc"
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index"

下载 rustup-init.exe 自动安装工具并按默认执行

地址:https://www.rust-lang.org/zh-CN/tools/install

双击 rustup-init.exe 后运行安装包,会先提示安装 visual cpp build tools,选择 yes。

接着开始安装 rust,包含 compilerrustupcargo。若无特殊需求,选择默认安装,即输入 1 即可

平移、贴地、旋转

let primitive = viewer.scene.primitives.add(tileset);

const longitude = 116.2392;
const latitude = 39.5847;
const height = -20;
primitive.readyPromise.then(() => {
let hpr = new Cesium.Matrix3();
// new Cesium.HeadingPitchRoll(heading, pitch, roll)
// heading围绕负z轴的旋转。pitch是围绕负y轴的旋转。Roll是围绕正x轴的旋转
let hprObj = new Cesium.HeadingPitchRoll(Math.PI, Math.PI, Math.PI);

// Cesium.Matrix3.fromHeadingPitchRoll (headingPitchRoll,result)
hpr = Cesium.Matrix3.fromHeadingPitchRoll(hprObj, hpr);

// 2、平移
// 2.3储存平移的结果
let modelMatrix = Cesium.Matrix4.multiplyByTranslation(
// 2.1从以度为单位的经度和纬度值返回Cartesian3位置
// 2.2计算4x4变换矩阵
Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(longitude, latitude, height)),
new Cesium.Cartesian3(),
new Cesium.Matrix4()
);
// 3、应用旋转
// Cesium.Matrix4.multiplyByMatrix3 (矩阵,旋转,结果)
Cesium.Matrix4.multiplyByMatrix3(modelMatrix, hpr, modelMatrix);

// 赋值
primitive._root.transform = modelMatrix;
});
viewer.zoomTo(tileset);