Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2010-02-13 02:24:59 +0300
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2010-02-13 02:24:59 +0300
commit1b3948f9aad25fec1923f5ccd36ea525d8e34fb6 (patch)
tree710d5fc642f82ecb3f95ceb25e28d91c326be16e /source
parenta6a5ce4f7b5c2bde71715b11052d2ce30a34cb6d (diff)
Further consolidation of the view map creation.
Made Controller::_EPSILON constant with the value 1e-6. Previously, the _EPSILON value was computed based on the minimum edge size within the scene being rendered (in some cases, the computed value resulted in zero). This does not seem to make sense, because _EPSILON has been used as a tolerance threshold of floating-point arithmetic errors throughout the view map creation. Since Blender uses single-precision real values for mesh data representations, the new constant _EPSILON value looks more adequate.
Diffstat (limited to 'source')
-rwxr-xr-xsource/blender/freestyle/intern/application/Controller.cpp6
-rwxr-xr-xsource/blender/freestyle/intern/view_map/ViewMapBuilder.cpp15
2 files changed, 16 insertions, 5 deletions
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp
index ad48b30d744..c0e05ba09f4 100755
--- a/source/blender/freestyle/intern/application/Controller.cpp
+++ b/source/blender/freestyle/intern/application/Controller.cpp
@@ -97,6 +97,7 @@ Controller::Controller()
_ProgressBar = new ProgressBar;
_SceneNumFaces = 0;
_minEdgeSize = DBL_MAX;
+ _EPSILON = 1e-6;
_bboxDiag = 0;
_ViewMap = 0;
@@ -210,13 +211,8 @@ int Controller::LoadMesh(Render *re, SceneRenderLayer* srl)
if(loader.minEdgeSize() < _minEdgeSize)
{
_minEdgeSize = loader.minEdgeSize();
- _EPSILON = _minEdgeSize*1e-6;
- if(_EPSILON < DBL_MIN)
- _EPSILON = 0.0;
}
- cout << "Epsilon computed : " << _EPSILON << endl;
-
// DEBUG
// ScenePrettyPrinter spp;
// blenderScene->accept(spp);
diff --git a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
index 157478c3a5e..96635517747 100755
--- a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
+++ b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
@@ -976,6 +976,21 @@ void ViewMapBuilder::ComputeSweepLineIntersections(ViewMap *ioViewMap, real epsi
if((Tb < -epsilon) || (Tb > 1+epsilon))
cerr << "Warning: 3D intersection out of range for edge " << fB->vertexA()->getId() << " - " << fB->vertexB()->getId() << endl;
+#if 0
+ if((Ta < -epsilon) || (Ta > 1+epsilon) || (Tb < -epsilon) || (Tb > 1+epsilon)) {
+ printf("ta %.12e\n", ta);
+ printf("tb %.12e\n", tb);
+ printf("a1 %e, %e -- b1 %e, %e\n", a1[0], a1[1], b1[0], b1[1]);
+ printf("a2 %e, %e -- b2 %e, %e\n", a2[0], a2[1], b2[0], b2[1]);
+ if((Ta < -epsilon) || (Ta > 1+epsilon))
+ printf("Ta %.12e\n", Ta);
+ if((Tb < -epsilon) || (Tb > 1+epsilon))
+ printf("Tb %.12e\n", Tb);
+ printf("A1 %e, %e, %e -- B1 %e, %e, %e\n", A1[0], A1[1], A1[2], B1[0], B1[1], B1[2]);
+ printf("A2 %e, %e, %e -- B2 %e, %e, %e\n", A2[0], A2[1], A2[2], B2[0], B2[1], B2[2]);
+ }
+#endif
+
TVertex * tvertex = ioViewMap->CreateTVertex(Vec3r(A1 + Ta*(A2-A1)), Vec3r(a1 + ta*(a2-a1)), fA,
Vec3r(B1 + Tb*(B2-B1)), Vec3r(b1 + tb*(b2-b1)), fB, id);