asteroidgen/src/Mesh.h

36 lines
1.3 KiB
C
Raw Normal View History

2017-10-29 05:28:00 +01:00
#pragma once
2017-11-02 03:44:44 +01:00
#include "types.h"
2017-10-29 05:28:00 +01:00
#include <vector>
#include <ostream>
2017-11-02 03:44:44 +01:00
void calculateVertexNormals(const vec3v_t &positions, uvec3v_t &indices,
vec3v_t &normals);
void calculateFaceNormals(const vec3v_t &positions, uvec3v_t &indices,
vec3v_t &normals);
void findEdges(const vec3v_t &positions, const uvec3v_t &indices,
uvec4v_t &edges);
//void createPatches(const vec3v_t &positions, const uvec3v_t &indices,
// const uvec4v_t &edges, vec3v_t &oPositions, uvec3v_t &oIndices,
// uvec4v_t &oEdges, uintv_t &patches, float threshold);
2017-10-29 05:28:00 +01:00
2017-11-02 03:44:44 +01:00
void moveToMean(vec3v_t &positions);
2017-10-29 05:28:00 +01:00
2017-11-02 03:44:44 +01:00
void smooth(vec3v_t &positions, const uvec3v_t &indices);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void saveAttrib(std::ostream &out, const char *prefix, vec3v_t &elements);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void saveAttrib(std::ostream &out, const char *prefix, vec2v_t &elements);
2017-10-29 05:28:00 +01:00
2017-11-02 03:44:44 +01:00
void saveFaces(std::ostream &out, const uvec3v_t &indicess, size_t attributes);
void findAdjacent(const uvec4v_t &edges, size_t nFaces, uvec3v_t &adjacents);
2017-10-29 05:28:00 +01:00
2017-11-02 03:44:44 +01:00
void computeTangentBasis(vec3v_t & vertices, vec2v_t & texcoords,
vec3v_t & normals, vec3v_t & tangents, vec3v_t & bitangents);
void createPatches(const vec3v_t &positions, const uvec3v_t &indices,
const vec3v_t &faceNormals, const uvec3v_t &adjacents,
vec3v_t &oPositions, uvec3v_t &oIndices, uintv_t &patches,
float threshold);