コード例 #1
0
static void fluidsimPrintChannel(FILE *file, float *channel, int paramsize, char *str, int entries) 
{ 
	int i, j;
	int channelSize = paramsize; 

	if (entries == 3) {
		elbeemSimplifyChannelVec3(channel, &channelSize);
	}
	else if (entries == 1) {
		elbeemSimplifyChannelFloat(channel, &channelSize);
	}
	else {
		/* invalid, cant happen? */
	}

	fprintf(file, "      CHANNEL %s =\n", str);
	for (i=0; i < channelSize; i++) {
		fprintf(file, "        ");
		for (j=0;j <= entries;j++) {  // also print time value
			fprintf(file, " %f ", channel[i*(entries + 1) + j]);
			if (j == entries-1) { fprintf(file, "  "); }
		}
		fprintf(file, "\n");
	}

	fprintf(file,  "      ;\n");
}
コード例 #2
0
ファイル: attributes.cpp プロジェクト: Aligorith/blender
static bool channelSimplifyScalarT(AnimChannel<SCALAR> &channel) {
	int   size = channel.getSize();
	if(size<=1) return false;
	float *nchannel = new float[2*size];
	// convert to array
	for(size_t i=0; i<channel.accessValues().size(); i++) {
		nchannel[i*2 + 0] = (float)channel.accessValues()[i];
		nchannel[i*2 + 1] = (float)channel.accessTimes()[i];
	}
	bool ret = elbeemSimplifyChannelFloat(nchannel, &size);
	if(ret) {
		vector<SCALAR> vals;
		vector<double> times;
		for(int i=0; i<size; i++) {
			vals.push_back(  (SCALAR)(nchannel[i*2 + 0]) );
			times.push_back( (double)(nchannel[i*2 + 1]) );
		}
		channel = AnimChannel<SCALAR>(vals, times);
	}
	delete [] nchannel;
	return ret;
}