这是一个学习C++与网页端进行联合编程的尝试,使用WASM将C++编译成js可调用的模块。从而使耗时的算法用底层C++实现,通过WASM二进制格式文件在网页端执行,提高效率。
本项目是一个完整的使用WASM技术,将C++与js联合编程的完美Demo,可以参考此项目进行改造,创建你自己的项目。
在网页端实现,在一堆3D点中,使用RANSAC进行平面提取的过程,网页端生成模拟3D点,传入C++层进行平面提取,返回平面的参数[center[xyz], normal[xyz]]
WASM的常规中文教程:
- WASM中文网:https://wasmdev.cn/guide/introduction/what-is-webassembly.html
- MDN的WASM教程:https://developer.mozilla.org/zh-CN/docs/WebAssembly/Concepts
- Emscripten官方文档:Emscripten
- 掘金:20分钟上手 webAssembly
实战参考
- CMake与Emscripten联合编译实践:https://stunlock.gg/posts/emscripten_with_cmake/
- wasm的模版:https://github.com/TheLartians/modern-wasm-starter
-
首先安装Emscripten, 在mac端直接
brew install emscripten
,或者参考官方教程- 安装完成后测试:
emcc -v
正确显示版本号,则安装成功
- 安装完成后测试:
-
编译
mkdir build cd build emcmake cmake .. make -j
-
创建测试环境
3D Plane fitting is based on https://github.com/YihuanL/PlaneFitting
3D Plane fitting using RANSAC method modified according to https://github.com/drsrinathsridhar/GRANSAC.
GRANSAC is released under an MIT License.