资源简介
用VS2013打开,修改模型输入输出位置,以及控制输出模型精度,即可进行三维模型的体素化。修改的位置已经在代码中注释了
代码片段和文件信息
#define VOXELIZER_DEBUG
#define VOXELIZER_IMPLEMENTATION
#include “voxelizer.h“
#define TINYOBJLOADER_IMPLEMENTATION
#include “tiny_obj_loader.h“
#include
#include
#include
#define TRIANGULATE
//#define POINT_CLOUD
int main(int argc char** argv) {
/*if (argc < 4) {
std::cout << “Usage: “ << std::endl;
std::cout << “\t./voxelizer file.obj resolution precision“ << std::endl;
return EXIT_FAILURE;
}*/
std::vector shapes;
std::vector materials;
std::string err;
bool ret = tinyobj::LoadObj(shapes materials err “models/teapot.obj“ NULL);//输入模型
if (!err.empty()) {
std::cerr << err << std::endl;
}
if (!ret) {
return EXIT_FAILURE;
}
std::cout << “shape_size:“ << shapes.size() << std::endl;
#ifdef TRIANGULATE
std::ofstream file(“mesh_voxelized_res.obj“); //输出的体素模型
#endif
#ifdef POINT_CLOUD
std::ofstream file(“mesh_voxelized_res.txt“);
#endif
size_t voffset = 0;
size_t noffset = 0;
for (size_t i = 0; i < shapes.size(); i++) {
std::cout << “shapes_index_“ << i<<“:“ ;
vx_mesh_t* mesh;
mesh = vx_mesh_alloc(shapes[i].mesh.positions.size() shapes[i].mesh.indices.size());
for (size_t f = 0; f < shapes[i].mesh.indices.size(); f++) {
mesh->indices[f] = shapes[i].mesh.indices[f];
}
for (size_t v = 0; v < shapes[i].mesh.positions.size() / 3; v++) {
mesh->vertices[v].x = shapes[i].mesh.positions[3 * v + 0];
mesh->vertices[v].y = shapes[i].mesh.positions[3 * v + 1];
mesh->vertices[v].z = shapes[i].mesh.positions[3 * v + 2];
}
float res = 10;
float precision = 10;
#ifdef TRIANGULATE
vx_mesh_t* result;
result = vx_voxelize(mesh res res res precision); //控制输出的体素模型精度
std::cout << “体素化完成,正在输出...“ << std::endl;
printf(“Number of vertices: %ld\n“ static_cast(result->nvertices));
printf(“Number of indices: %ld\n“ static_cast(result->nindices));
if (file.is_open()) {
file << “\n“;
file << “o “ << i << “\n“;
for (int j = 0; j < result->nvertices; ++j) {
file << “v “ << result->vertices[j].x << “ “
<< result->vertices[j].y << “ “
<< result->vertices[j].z << “\n“;
}
for (int j = 0; j < result->nnormals; ++j) {
file << “vn “ << result->normals[j].x << “ “
<< result->normals[j].y << “ “
<< result->normals[j].z << “\n“;
}
size_t max = 0;
for (int j = 0; j < result->nindices; j += 3) {
size_t i0 = voffset + result->indices[j + 0] + 1;
size_t i1 = voffset + result->indices[j + 1] + 1;
size_t i2 = voffset + result->indices[j + 2] + 1;
max = i0 > max ? i0 : max;
max = i1 > max ? i1 : max;
max = i2 > max ? i2 : max;
file << “f “;
file << i0 << “//“ << result->normalindices[j + 0] + noffset + 1 << “ “;
file << i1 << “//“ << result->normalindices[j + 1] + noffset + 1 << “ “;
file << i2 << “//“ << result->normalindices[j + 2] + noffset + 1 << “\n“;
}
voffset += max;
noffset += 6;
}
vx_mesh_free(result);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-03-27 14:45 VoxelTest\
目录 0 2019-03-27 14:40 VoxelTest\.vs\
目录 0 2019-03-27 14:40 VoxelTest\.vs\VoxelTest\
目录 0 2019-03-27 14:40 VoxelTest\.vs\VoxelTest\v14\
文件 28672 2018-11-27 16:51 VoxelTest\.vs\VoxelTest\v14\.suo
目录 0 2019-03-27 14:45 VoxelTest\VoxelTest\
文件 7864320 2019-03-27 14:45 VoxelTest\VoxelTest.sdf
文件 1309 2018-11-27 10:23 VoxelTest\VoxelTest.sln
文件 25600 2019-03-27 14:45 VoxelTest\VoxelTest.v12.suo
目录 0 2019-03-27 14:40 VoxelTest\VoxelTest\Debug\
文件 2669299 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\main.obj
文件 470016 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\vc140.idb
文件 888832 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\vc140.pdb
文件 5585 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.log
目录 0 2019-03-27 14:40 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\
文件 738 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\CL.command.1.tlog
文件 17810 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\CL.read.1.tlog
文件 644 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\CL.write.1.tlog
文件 1314 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\li
文件 3342 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\li
文件 622 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\li
文件 188 2018-11-27 10:34 VoxelTest\VoxelTest\Debug\VoxelTest.tlog\VoxelTest.lastbuildstate
文件 3567 2019-03-27 14:45 VoxelTest\VoxelTest\main.cpp
文件 495213 2019-03-27 14:43 VoxelTest\VoxelTest\mesh_voxelized_res.obj
目录 0 2019-03-27 14:40 VoxelTest\VoxelTest\models\
文件 45104062 2017-05-29 14:15 VoxelTest\VoxelTest\models\building.obj
文件 205917 2017-07-11 08:50 VoxelTest\VoxelTest\models\bunny.obj
文件 663 2017-07-11 08:50 VoxelTest\VoxelTest\models\cube.obj
文件 3466613 2017-07-11 08:50 VoxelTest\VoxelTest\models\dragon.obj
文件 580788 2018-11-26 21:42 VoxelTest\VoxelTest\models\huiya.obj
文件 248098 2017-07-11 08:50 VoxelTest\VoxelTest\models\suzanne.obj
............此处省略26个文件信息
相关资源
- 数据结构用面向对象方法和C++描述 殷
- wincap c++ mfc 网络截包 多线程
- KCF跟踪算法(C++)146187
- C++程序设计(谭浩强)146060
- c++图像处理编程
- Effective C++
- Visual C++程序设计与应用教程第二版案
- C++程序设计实践指导
- C++操作SQL Server数据库新增 删除 修改
- C++编写电压电流表仪表盘
- effective c++中文版第三版pdf
- C++ QT5教程 开发大全和教程 完整
- 基于MFC的飞秋实现
- vc++直接控制excel程序打开
- 基于信息熵的属性约简算法c/c++代码
- c++钩子技术实现文件监控
- C++命名管道详解及简单案例基于VS20
- C++匿名管道详解及简单案例基于VS20
- qt编程经典书籍全 QT教程 C++ GUI Qt
- C++纯socket写的FTP服务器
- VS2010 C++ MFC简易计算器
- C++计算任意函数值 积分 线性方程组
- 网上收集的2011.12之前的绝大部分 五子
- PC-Lint 9.0L最新版,附带MISRA C++ 2008 p
- 《深入探索C++对象模型》中文pdf 侯捷
- DataStructuresandAlgorithmsinC++4thEditionbyAd
- 计算机图形学图形剪裁与变换算法的
- C++ GUI with Qt4编程-带完整书签.pdf
- MFC项目开发85个
- C++ How to Program 9th edition
评论
共有 条评论