Adaptive sampling uses rotated circluar grid. Handles tight spots better.

This commit is contained in:
Mikko Mononen 2010-10-15 13:49:26 +00:00
parent b13a0e60c8
commit 7774a7f45d
6 changed files with 336 additions and 64 deletions

View File

@ -100,7 +100,7 @@ public:
inline void setCurrentVelocityWeight(float w) { m_weightCurVel = w; }
inline void setPreferredSideWeight(float w) { m_weightSide = w; }
inline void setCollisionTimeWeight(float w) { m_weightToi = w; }
inline void setTimeHorizon(float t) { m_horizTime = t; }
inline void setTimeHorizon(float t) { m_horizTime = t; }
void sampleVelocity(const float* pos, const float rad, const float vmax,
const float* vel, const float* dvel,

View File

@ -513,6 +513,9 @@ void dtObstacleAvoidanceQuery::sampleVelocity(const float* pos, const float rad,
}
}
static const float DT_PI = 3.14159265f;
void dtObstacleAvoidanceQuery::sampleVelocityAdaptive(const float* pos, const float rad, const float vmax,
const float* vel, const float* dvel,
float* nvel,
@ -527,41 +530,67 @@ void dtObstacleAvoidanceQuery::sampleVelocityAdaptive(const float* pos, const fl
// First sample location.
float res[3];
dtVset(res, dvel[0] * m_velBias, 0, vel[2] * m_velBias);
float cs = vmax * (2 - m_velBias*2) / (float)(m_gridSize-1);
dtVset(res, dvel[0] * m_velBias, 0, dvel[2] * m_velBias);
// Build sampling pattern aligned to desired velocity.
static const int MAX_PATTERN_SIZE = 32;
float pat[MAX_PATTERN_SIZE*2];
int npat = 0;
// Always add sample at zero
pat[npat*2+0] = 0;
pat[npat*2+1] = 0;
npat++;
const int nring = dtClamp(m_gridSize, 1, MAX_PATTERN_SIZE);
const float sring = (1.0f/nring) * DT_PI*2;
const float dang = atan2f(dvel[2], dvel[0]);
for (int i = 0; i < nring; ++i)
{
const float a = dang + (float)(i+0.5f)*sring;
pat[npat*2+0] = cosf(a)*0.5f;
pat[npat*2+1] = sinf(a)*0.5f;
npat++;
}
for (int i = 0; i < nring; ++i)
{
const float a = dang + (float)i * sring;
pat[npat*2+0] = cosf(a);
pat[npat*2+1] = sinf(a);
npat++;
}
float cr = vmax * (1.0f-m_velBias);
for (int k = 0; k < m_gridDepth; ++k)
{
const float half = (m_gridSize-1)*cs*0.5f;
float minPenalty = FLT_MAX;
float bvel[3];
dtVset(bvel, 0,0,0);
for (int y = 0; y < m_gridSize; ++y)
for (int i = 0; i < npat; ++i)
{
for (int x = 0; x < m_gridSize; ++x)
float vcand[3];
vcand[0] = res[0] + pat[i*2+0]*cr;
vcand[1] = 0;
vcand[2] = res[2] + pat[i*2+1]*cr;
if (dtSqr(vcand[0])+dtSqr(vcand[2]) > dtSqr(vmax+0.001f)) continue;
const float penalty = processSample(vcand,cr/10, pos,rad,vmax,vel,dvel, debug);
if (penalty < minPenalty)
{
float vcand[3];
vcand[0] = res[0] + x*cs - half;
vcand[1] = 0;
vcand[2] = res[2] + y*cs - half;
if (dtSqr(vcand[0])+dtSqr(vcand[2]) > dtSqr(vmax+cs/2)) continue;
const float penalty = processSample(vcand,cs, pos,rad,vmax,vel,dvel, debug);
if (penalty < minPenalty)
{
minPenalty = penalty;
dtVcopy(bvel, vcand);
}
minPenalty = penalty;
dtVcopy(bvel, vcand);
}
}
dtVcopy(res, bvel);
cs *= 0.5f;
}
cr *= 0.5f;
}
dtVcopy(nvel, res);
}

View File

@ -207,6 +207,28 @@
6B1635DB1268881A0083FC15 /* PBXTextBookmark */ = 6B1635DB1268881A0083FC15 /* PBXTextBookmark */;
6B1635DC1268882D0083FC15 /* PBXTextBookmark */ = 6B1635DC1268882D0083FC15 /* PBXTextBookmark */;
6B1635DF1268887E0083FC15 /* PBXTextBookmark */ = 6B1635DF1268887E0083FC15 /* PBXTextBookmark */;
6B1635E612688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E612688D1B0083FC15 /* PBXTextBookmark */;
6B1635E712688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E712688D1B0083FC15 /* PBXTextBookmark */;
6B1635E812688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E812688D1B0083FC15 /* PBXTextBookmark */;
6B1635E912688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E912688D1B0083FC15 /* PBXTextBookmark */;
6B1635EA12688D1B0083FC15 /* PBXTextBookmark */ = 6B1635EA12688D1B0083FC15 /* PBXTextBookmark */;
6B1635F712688D880083FC15 /* PBXTextBookmark */ = 6B1635F712688D880083FC15 /* PBXTextBookmark */;
6B1635FB12688DBE0083FC15 /* PBXTextBookmark */ = 6B1635FB12688DBE0083FC15 /* PBXTextBookmark */;
6B1635FF12688E740083FC15 /* PBXTextBookmark */ = 6B1635FF12688E740083FC15 /* PBXTextBookmark */;
6B16360312688EB40083FC15 /* PBXTextBookmark */ = 6B16360312688EB40083FC15 /* PBXTextBookmark */;
6B1636051268911A0083FC15 /* PBXTextBookmark */ = 6B1636051268911A0083FC15 /* PBXTextBookmark */;
6B1636061268911A0083FC15 /* PBXTextBookmark */ = 6B1636061268911A0083FC15 /* PBXTextBookmark */;
6B1636071268911A0083FC15 /* PBXTextBookmark */ = 6B1636071268911A0083FC15 /* PBXTextBookmark */;
6B163608126891A40083FC15 /* PBXTextBookmark */ = 6B163608126891A40083FC15 /* PBXTextBookmark */;
6B163609126891A40083FC15 /* PBXTextBookmark */ = 6B163609126891A40083FC15 /* PBXTextBookmark */;
6B16360A126891A40083FC15 /* PBXTextBookmark */ = 6B16360A126891A40083FC15 /* PBXTextBookmark */;
6B16360B126891A40083FC15 /* PBXTextBookmark */ = 6B16360B126891A40083FC15 /* PBXTextBookmark */;
6B16360C126891A40083FC15 /* PBXTextBookmark */ = 6B16360C126891A40083FC15 /* PBXTextBookmark */;
6B16360D126891A40083FC15 /* PBXTextBookmark */ = 6B16360D126891A40083FC15 /* PBXTextBookmark */;
6B16360E126891A40083FC15 /* PBXTextBookmark */ = 6B16360E126891A40083FC15 /* PBXTextBookmark */;
6B163611126892060083FC15 /* PBXTextBookmark */ = 6B163611126892060083FC15 /* PBXTextBookmark */;
6B163612126892060083FC15 /* PBXTextBookmark */ = 6B163612126892060083FC15 /* PBXTextBookmark */;
6B163613126892060083FC15 /* PBXTextBookmark */ = 6B163613126892060083FC15 /* PBXTextBookmark */;
6B1C8E08121EB4FF0048697F = 6B1C8E08121EB4FF0048697F /* PBXTextBookmark */;
6B4214D911803923006C347B = 6B4214D911803923006C347B /* PBXTextBookmark */;
6B847515122B9F4900ADF63D = 6B847515122B9F4900ADF63D /* PBXTextBookmark */;
@ -401,9 +423,9 @@
};
6B137C7E0F7FCBFE00459200 /* Recast.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 9087}}";
sepNavIntBoundsRect = "{{0, 0}, {931, 9555}}";
sepNavSelRange = "{12869, 0}";
sepNavVisRange = "{12510, 812}";
sepNavVisRange = "{12440, 883}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@ -707,7 +729,7 @@
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 529";
rLen = 0;
rLoc = 12772;
rLoc = 12814;
rType = 0;
vrLen = 920;
vrLoc = 12687;
@ -981,7 +1003,7 @@
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 1034";
rLen = 0;
rLoc = 24844;
rLoc = 24885;
rType = 0;
vrLen = 957;
vrLoc = 24441;
@ -1205,6 +1227,226 @@
vrLen = 1288;
vrLoc = 11723;
};
6B1635E612688D1B0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
name = "DetourNavMesh.h: 306";
rLen = 0;
rLoc = 12197;
rType = 0;
vrLen = 1206;
vrLoc = 11852;
};
6B1635E712688D1B0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */;
name = "DetourObstacleAvoidance.h: 132";
rLen = 0;
rLoc = 4746;
rType = 0;
vrLen = 1464;
vrLoc = 3424;
};
6B1635E812688D1B0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
name = "Recast.h: 358";
rLen = 0;
rLoc = 12869;
rType = 0;
vrLen = 883;
vrLoc = 12440;
};
6B1635E912688D1B0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 586";
rLen = 0;
rLoc = 13501;
rType = 0;
vrLen = 694;
vrLoc = 13501;
};
6B1635EA12688D1B0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 607";
rLen = 0;
rLoc = 13880;
rType = 0;
vrLen = 833;
vrLoc = 13817;
};
6B1635F712688D880083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 625";
rLen = 0;
rLoc = 14179;
rType = 0;
vrLen = 659;
vrLoc = 14120;
};
6B1635FB12688DBE0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 610";
rLen = 0;
rLoc = 13876;
rType = 0;
vrLen = 659;
vrLoc = 14120;
};
6B1635FF12688E740083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 614";
rLen = 0;
rLoc = 14011;
rType = 0;
vrLen = 660;
vrLoc = 14120;
};
6B16360312688EB40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 580";
rLen = 0;
rLoc = 13113;
rType = 0;
vrLen = 763;
vrLoc = 13692;
};
6B1636051268911A0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */;
name = "DetourObstacleAvoidance.h: 96";
rLen = 10;
rLoc = 3207;
rType = 0;
vrLen = 1819;
vrLoc = 3088;
};
6B1636061268911A0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 600";
rLen = 0;
rLoc = 13656;
rType = 0;
vrLen = 1025;
vrLoc = 13627;
};
6B1636071268911A0083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 594";
rLen = 0;
rLoc = 13464;
rType = 0;
vrLen = 924;
vrLoc = 13516;
};
6B163608126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */;
name = "DetourObstacleAvoidance.h: 96";
rLen = 10;
rLoc = 3207;
rType = 0;
vrLen = 1819;
vrLoc = 3088;
};
6B163609126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 605";
rLen = 0;
rLoc = 13657;
rType = 0;
vrLen = 1067;
vrLoc = 13632;
};
6B16360A126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */;
name = "ConvexVolumeTool.h: 43";
rLen = 0;
rLoc = 1384;
rType = 0;
vrLen = 1504;
vrLoc = 249;
};
6B16360B126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
name = "CrowdTool.cpp: 41";
rLen = 1095;
rLoc = 1351;
rType = 0;
vrLen = 1225;
vrLoc = 1742;
};
6B16360C126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BD667D8123D27EC0021A7A4 /* CrowdManager.h */;
name = "CrowdManager.h: 232";
rLen = 0;
rLoc = 5681;
rType = 0;
vrLen = 908;
vrLoc = 5232;
};
6B16360D126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 33";
rLen = 0;
rLoc = 1288;
rType = 0;
vrLen = 1286;
vrLoc = 446;
};
6B16360E126891A40083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 35";
rLen = 0;
rLoc = 1417;
rType = 0;
vrLen = 1286;
vrLoc = 446;
};
6B163611126892060083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 35";
rLen = 0;
rLoc = 1417;
rType = 0;
vrLen = 1286;
vrLoc = 446;
};
6B163612126892060083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 605";
rLen = 0;
rLoc = 13657;
rType = 0;
vrLen = 1067;
vrLoc = 13632;
};
6B163613126892060083FC15 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 574";
rLen = 0;
rLoc = 13769;
rType = 0;
vrLen = 905;
vrLoc = 13302;
};
6B1C8E08121EB4FF0048697F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
@ -1255,9 +1497,9 @@
};
6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {933, 880}}";
sepNavIntBoundsRect = "{{0, 0}, {931, 715}}";
sepNavSelRange = "{1384, 0}";
sepNavVisRange = "{999, 754}";
sepNavVisRange = "{249, 1504}";
};
};
6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */ = {
@ -1522,8 +1764,8 @@
6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 5278}}";
sepNavSelRange = "{12637, 0}";
sepNavVisRange = "{11723, 1288}";
sepNavSelRange = "{12197, 0}";
sepNavVisRange = "{11852, 1206}";
};
};
6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = {
@ -1663,16 +1905,16 @@
};
6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {933, 2352}}";
sepNavSelRange = "{2796, 24}";
sepNavVisRange = "{2788, 1084}";
sepNavIntBoundsRect = "{{0, 0}, {931, 1963}}";
sepNavSelRange = "{3207, 10}";
sepNavVisRange = "{3088, 1819}";
};
};
6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 7397}}";
sepNavSelRange = "{12772, 0}";
sepNavVisRange = "{12687, 920}";
sepNavIntBoundsRect = "{{0, 0}, {931, 7748}}";
sepNavSelRange = "{13769, 0}";
sepNavVisRange = "{13302, 905}";
};
};
6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = {
@ -1955,7 +2197,7 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 8008}}";
sepNavSelRange = "{1351, 1095}";
sepNavVisRange = "{1878, 995}";
sepNavVisRange = "{1742, 1225}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@ -2240,7 +2482,7 @@
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 493";
rLen = 0;
rLoc = 11581;
rLoc = 11622;
rType = 0;
vrLen = 1249;
vrLoc = 11428;
@ -2599,16 +2841,16 @@
};
6BD667D8123D27EC0021A7A4 /* CrowdManager.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1041, 3796}}";
sepNavIntBoundsRect = "{{0, 0}, {1041, 3718}}";
sepNavSelRange = "{5681, 0}";
sepNavVisRange = "{5284, 763}";
sepNavVisRange = "{5232, 908}";
};
};
6BD667D9123D28100021A7A4 /* CrowdManager.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 16172}}";
sepNavSelRange = "{24844, 0}";
sepNavVisRange = "{24441, 957}";
sepNavIntBoundsRect = "{{0, 0}, {931, 16445}}";
sepNavSelRange = "{1417, 0}";
sepNavVisRange = "{446, 1286}";
};
};
6BD667FF123D2D230021A7A4 /* PBXTextBookmark */ = {

View File

@ -284,14 +284,14 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>15</integer>
<integer>26</integer>
<integer>11</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
<string>{{0, 0}, {264, 660}}</string>
<string>{{0, 238}, {264, 660}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@ -326,7 +326,7 @@
<key>PBXProjectModuleGUID</key>
<string>6B8632A30F78115100E2684A</string>
<key>PBXProjectModuleLabel</key>
<string>DetourNavMesh.h</string>
<string>DetourObstacleAvoidance.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -334,11 +334,11 @@
<key>PBXProjectModuleGUID</key>
<string>6B8632A40F78115100E2684A</string>
<key>PBXProjectModuleLabel</key>
<string>DetourNavMesh.h</string>
<string>DetourObstacleAvoidance.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>6B1635DF1268887E0083FC15</string>
<string>6B163613126892060083FC15</string>
<key>history</key>
<array>
<string>6BBB4C34115B7A3D00CF791D</string>
@ -368,12 +368,10 @@
<string>6B920A521225C0AC00D5B5AD</string>
<string>6B920A6D1225C5DD00D5B5AD</string>
<string>6BA7F8EC1227002300C8C47A</string>
<string>6B8476F9122D000800ADF63D</string>
<string>6B847779122D223D00ADF63D</string>
<string>6B84778B122D279700ADF63D</string>
<string>6B8477BB122D297200ADF63D</string>
<string>6B8477E1122D2B9100ADF63D</string>
<string>6B8477EE122D2CC900ADF63D</string>
<string>6B8477FC122D2E2A00ADF63D</string>
<string>6B8477FE122D2E2A00ADF63D</string>
<string>6B8477FF122D2E2A00ADF63D</string>
@ -416,21 +414,23 @@
<string>6B1633141268326F0083FC15</string>
<string>6B163317126832D20083FC15</string>
<string>6B16357012687A5D0083FC15</string>
<string>6B16357112687A5D0083FC15</string>
<string>6B16358E12687D740083FC15</string>
<string>6B16359012687D740083FC15</string>
<string>6B16359112687D740083FC15</string>
<string>6B16359D12687D980083FC15</string>
<string>6B1635B5126884520083FC15</string>
<string>6B1635B6126884520083FC15</string>
<string>6B1635B9126884520083FC15</string>
<string>6B1635BB126884520083FC15</string>
<string>6B1635C8126885AD0083FC15</string>
<string>6B1635C9126885AD0083FC15</string>
<string>6B1635D3126887C80083FC15</string>
<string>6B1635D4126887C80083FC15</string>
<string>6B1635D91268881A0083FC15</string>
<string>6B1635DA1268881A0083FC15</string>
<string>6B1635E612688D1B0083FC15</string>
<string>6B1635E812688D1B0083FC15</string>
<string>6B163608126891A40083FC15</string>
<string>6B16360A126891A40083FC15</string>
<string>6B16360B126891A40083FC15</string>
<string>6B16360C126891A40083FC15</string>
<string>6B163611126892060083FC15</string>
<string>6B163612126892060083FC15</string>
</array>
</dict>
<key>SplitCount</key>
@ -444,18 +444,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {992, 570}}</string>
<string>{{0, 0}, {992, 673}}</string>
<key>RubberWindowFrame</key>
<string>0 59 1278 719 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>570pt</string>
<string>673pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>103pt</string>
<string>0pt</string>
<key>Tabs</key>
<array>
<dict>
@ -523,7 +523,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {992, 76}}</string>
<string>{{10, 27}, {992, -27}}</string>
<key>RubberWindowFrame</key>
<string>0 59 1278 719 0 0 1280 778 </string>
</dict>

View File

@ -31,8 +31,9 @@
#include "DetourAssert.h"
#include "DetourAlloc.h"
static const int VO_ADAPTIVE_GRID_SIZE = 4;
static const int VO_ADAPTIVE_GRID_SIZE = 7; // this resuts 1+n*2 samples per depth.
static const int VO_ADAPTIVE_GRID_DEPTH = 5;
static const int VO_GRID_SIZE = 33;