コード例 #1
1
ファイル: skpmodel.cpp プロジェクト: pulkitag/skp2obj
int SkpModel::LoadVertices(){
	SUResult res;
	int out = 0;

	for (int f=0; f<faces_.size(); f++){
		//Form the mesh
		SUMeshHelperRef mesh = SU_INVALID;
		res = SUMeshHelperCreate(&mesh, faces_[f]);
		ErrorHandler(res);
		
		// Get number of vertices. 
		size_t num_vertices;
		res = SUMeshHelperGetNumVertices(mesh, &num_vertices);
		ErrorHandler(res);

		//Get vertices.
		std::vector<SUPoint3D>   vertices(num_vertices);
		res = SUMeshHelperGetVertices(mesh, num_vertices, &vertices[0], &num_vertices);
		ErrorHandler(res);
		vertices_.add(vertices);
		
		//Get Normals
		std::vector<SUVector3D>  normals(num_vertices);
		res = SUMeshHelperGetNormals (mesh, num_vertices, &normals[0], &num_vertices);
		ErrorHandler(res);
		normals_.add(normals);

		//Front Texture Coordinates
		std::vector<SUPoint3D> texture_coords(num_vertices);
		size_t num_coords;
		res = SUMeshHelperGetFrontSTQCoords(mesh, num_vertices, &texture_coords[0], &num_coords);
		ErrorHandler(res);
		assert(num_coords == num_vertices);
		stqcoords_front_.add(texture_coords);

		//Back Texture Coordinates
		std::vector<SUPoint3D> texture_coords_back(num_vertices);
		res = SUMeshHelperGetFrontSTQCoords(mesh, num_vertices, &texture_coords_back[0], &num_coords);
		ErrorHandler(res);
		assert(num_coords == num_vertices);
		stqcoords_back_.add(texture_coords_back);

		SUMeshHelperRelease(&mesh);
		//*/
		/*
		size_t num_vertices;
		SUFaceGetNumVertices(faces_[f], &num_vertices);
		std::vector<SUVertexRef> vertices(num_vertices);
		SUFaceGetVertices(faces_[f], num_vertices, &vertices[0], &num_vertices);
		vertices_.add(vertices);
		*/

	}
	return out;
}
コード例 #2
0
ファイル: ModelWriter.cpp プロジェクト: jflo/sketchup2room
void ModelWriter::writeFaces(SUFaceRef face, const Transform& t){

	SUMeshHelperRef mesh = SU_INVALID;
	SUMeshHelperCreate(&mesh,face);

	if(SketchupHelper::getFrontFaceMaterialName(face) == m_CurrentMat) {
		writeFace(mesh, t, true, SketchupHelper::isFrontFaceTextured(face));
	}

	if(SketchupHelper::getBackFaceMaterialName(face) == m_CurrentMat) {
		writeFace(mesh, t, false, SketchupHelper::isBackFaceTextured(face));
	}
	
}
コード例 #3
0
ファイル: skpmodel.cpp プロジェクト: pulkitag/skp2obj
int SkpModel::Face2AttributeIndices(SUFaceRef face, std::vector<size_t>* vertIdxs,
	 								std::vector<size_t>* normalIdxs, std::vector<size_t>* fIdxs){
	int out = 0;
	SUResult res;

	//Form the mesh
	SUMeshHelperRef mesh = SU_INVALID;
	res = SUMeshHelperCreate(&mesh, face);
	ErrorHandler(res);
	
	// Get number of vertices. 
	size_t num_vertices;
	res = SUMeshHelperGetNumVertices(mesh, &num_vertices);
	ErrorHandler(res);

	//Get vertices.
	std::vector<SUPoint3D>   vertices(num_vertices);
	res = SUMeshHelperGetVertices(mesh, num_vertices, &vertices[0], &num_vertices);
	ErrorHandler(res);
	
	//Get Normals
	std::vector<SUVector3D>  normals(num_vertices);
	res = SUMeshHelperGetNormals (mesh, num_vertices, &normals[0], &num_vertices);
	ErrorHandler(res);

	//Get Front Texture indices
	std::vector<SUPoint3D>  fcoords(num_vertices);
	res = SUMeshHelperGetFrontSTQCoords(mesh, num_vertices, &fcoords[0], &num_vertices);
	ErrorHandler(res);

	SUMeshHelperRelease(&mesh);
	assert(vertIdxs->size() == num_vertices);

	for (size_t i =0; i < num_vertices; i++){
		vertIdxs->at(i)   = vertices_.get_index(vertices[i]);
		normalIdxs->at(i) = normals_.get_index(normals[i]);
		fIdxs->at(i)      = stqcoords_front_.get_index(fcoords[i]);
	}

	return out;	
}