Example #1
0
	void updateLevel()
	{
		TTool::Application *app = TTool::getApplication();
		if (!app->getCurrentLevel()->getLevel())
			return;
		TXshSimpleLevelP xl = app->getCurrentLevel()->getLevel()->getSimpleLevel();
		if (app->getCurrentFrame()->getFrameType() != TFrameHandle::LevelFrame)
			return;

		TFrameId fid = app->getCurrentFrame()->getFid();
		TVectorImageP src = xl->getFrame(fid, true);
		int count = src->getStrokeCount();

		for (int i = 1; i < 10; i++) {
			++fid;
			if (!xl->isFid(fid)) {
				TVectorImageP vi = new TVectorImage();
				xl->setFrame(fid, vi);
			}
			TVectorImageP vi = xl->getFrame(fid, true);
			TVectorImageP dst = src->clone();
			deform(dst.getPointer(), src.getPointer(), (double)i / (double)9);
			count = dst->getStrokeCount();
			vi->mergeImage(dst, TAffine());
			app->getCurrentTool()->getTool()->notifyImageChanged(fid);
		}
	}
Example #2
0
void DSC::VelocityFunc::take_time_step(DeformableSimplicialComplex& dsc) {
    compute_time = 0.;
    deform_time = 0.;

    deform(dsc);

    time_step++;
}
Example #3
0
ofMesh ofxFfd::deformMesh(ofMesh mesh){
    ofMesh dst;
    dst.append(mesh);
    for ( int i=0; i<mesh.getNumVertices(); i++ ) {
        ofVec3f vec = mesh.getVertex(i);
        dst.setVertex(i, deform(vec));
    }
    return dst;
}
Example #4
0
	void deform(TVectorImage *dstImage, const TVectorImage *srcImage, double t = 1.0)
	{
		update();
		int n = srcImage->getStrokeCount();
		if ((int)dstImage->getStrokeCount() < n)
			n = dstImage->getStrokeCount();
		std::vector<int> ii(n);
		std::vector<TStroke *> oldStrokes(n);
		for (int i = 0; i < n; i++) {
			ii[i] = i;
			oldStrokes[i] = srcImage->getStroke(i);
			deform(dstImage->getStroke(i), oldStrokes[i], t);
		}
		dstImage->notifyChangedStrokes(ii, oldStrokes);
	}
Example #5
0
ofVec3f ofxFfd::deformPoint(const ofVec3f &vec){
    return deform(vec);
}