Example #1
0
static void process_node(Model* model, struct aiNode* node, struct aiScene* scene) {
    for (int i = 0; i < node->mNumMeshes; i++) {
        struct aiMesh* mesh = scene->mMeshes[node->mMeshes[i]];
        model->meshes[node->mMeshes[i]] = process_mesh(mesh, scene);
    }

    for (int i = 0; i < node->mNumChildren; i++) {
        process_node(model, node->mChildren[i], scene);
    }
}
Example #2
0
File: utility.cpp Project: tommp/V8
void process_node(const aiNode* node, 
					const aiScene* scene, 
					std::vector<std::string>& mesh_names,
					std::unordered_map<std::string, GLuint>& bone_id_map,
					const std::string& modelname){
	for(GLuint i = 0; i < node->mNumMeshes; i++) {
		aiMesh* mesh = scene->mMeshes[node->mMeshes[i]]; 
		mesh_names.push_back(process_mesh(mesh, scene, bone_id_map, modelname));	
	}

	for(GLuint i = 0; i < node->mNumChildren; i++) {
		process_node(node->mChildren[i], scene, mesh_names, bone_id_map, modelname);
	}
}
Example #3
0
int convert(const char *infname)
{
	int i, bufsz;
	const struct aiScene *aiscn;
	struct goat3d *goat;
	char *outfname;

	bufsz = output_filename(0, 0, infname, "goat3d");
	outfname = alloca(bufsz);
	output_filename(outfname, bufsz, infname, "goat3d");
	printf("converting %s -> %s\n", infname, outfname);


	if(!(aiscn = aiImportFile(infname, SCE_PPFLAGS))) {
		fprintf(stderr, "failed to import %s\n", infname);
		return -1;
	}

	goat = goat3d_create();

	for(i=0; i<(int)aiscn->mNumMaterials; i++) {
		struct aiMaterial *aimat = aiscn->mMaterials[i];
		struct goat3d_material *mat = goat3d_create_mtl();

		process_material(mat, aimat);
		goat3d_add_mtl(goat, mat);
	}

	for(i=0; i<(int)aiscn->mNumMeshes; i++) {
		struct aiMesh *aimesh = aiscn->mMeshes[i];
		struct goat3d_mesh *mesh = goat3d_create_mesh();

		process_mesh(goat, mesh, aimesh);
		goat3d_add_mesh(goat, mesh);
	}

	for(i=0; i<(int)aiscn->mRootNode->mNumChildren; i++) {
		process_node(goat, 0, aiscn->mRootNode->mChildren[i]);
	}

	goat3d_save(goat, outfname);
	goat3d_free(goat);
	aiReleaseImport(aiscn);
	return 0;
}
Example #4
0
int ProcessMedlineArticle( DBPROCESS *db, MedArt *rec, int is_pub )
{
    AbPList	plist;
    RETCODE	rc;
    DBCHAR	state_msg[40];		/* Text description of state */
    DBINT	state;
    int		status;

    /* Clear out the input record */

    bzero( rec, sizeof(MedArt) );
    bzero( &plist, sizeof(plist) );	/* Get rid of all patches */

    /* Collect the data from the database */

    for(status = True; status != Error; rc = dbresults( db )) {

	/* Get the next header row from the batch and then skip to
	   the results batch associated with the header (dbresults call) */

	rc = SybaseLoad( db,
		1,	INTBIND,	0,			&state,
		2,	NTBSTRINGBIND,	sizeof(state_msg),	state_msg,
		0 );
	if( rc == REG_ROW ) {
	    /* EOF marked with MR_STATE_DONE as the state */
	    if( state == MR_STATE_DONE ) 
		return( True );

	    /* Prepare to read the results section */
	    rc = dbresults(db);
	}
	if( rc != SUCCEED ) return( Error );

	/* Dispatch to the handler for this block of input */

	switch( state ) {
	    case MR_STATE_ARTICLE:	/* This one should be first */
		if ( is_pub )
			status = process_pub_article( db, rec );
		else
			status = process_article( db, rec );
		if( status != True ) return( status );
		break;
	    case MR_STATE_ISO_VTITLE:
		status = patch_string(db, rec->vtitle, sizeof(rec->vtitle));
		break;
	    case MR_STATE_ISO_ADDRESS:
		status = patch_string(db, rec->address, sizeof(rec->address));
		break;
	    case MR_STATE_AUTHOR:
		status = process_author( db, rec );
		break;
	    case MR_STATE_ISO_AUTHOR:
		status = patch_author( db, rec );
		break;
	    case MR_STATE_ISO_ABSTRACT:
		if( plist.n_patches > 0 )
		    bzero( &plist, sizeof(plist) );
		status = patch_abstract( db, rec, &plist );
		break;
	    case MR_STATE_ABSTRACT:
		status = process_abstract( db, rec, &plist );
		break;
	    case MR_STATE_MESH:
		status = process_mesh( db, rec );
		break;
	    case MR_STATE_SUBHEADING:
		status = process_subheading( db, rec );
		break;
	    case MR_STATE_SUBSTANCE:
		status = process_substance( db, rec );
		break;
	    case MR_STATE_CROSSREFERENCE:
		status = process_xref( db, rec );
		break;
	    case MR_STATE_SUPPORT:
		status = process_support( db, rec );
		break;
	    case MR_STATE_GENESYMBOL:
		status = process_genesymbol( db, rec );
		break;
	    default:			/* Unknown state - ignore it */
		status = skip_undefined_section( db );
		break;
	}
    }

    /* Return the proper status */

    return( Error );
}