Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
a2f1cd87f8
|
@ -148,7 +148,7 @@ public abstract class BSPhysObject : PhysicsActor
|
||||||
// The asset state is first 'Unknown' then 'Waiting' then either 'Failed' or 'Fetched'.
|
// The asset state is first 'Unknown' then 'Waiting' then either 'Failed' or 'Fetched'.
|
||||||
public enum PrimAssetCondition
|
public enum PrimAssetCondition
|
||||||
{
|
{
|
||||||
Unknown, Waiting, Failed, Fetched
|
Unknown, Waiting, FailedAssetFetch, FailedMeshing, Fetched
|
||||||
}
|
}
|
||||||
public PrimAssetCondition PrimAssetState { get; set; }
|
public PrimAssetCondition PrimAssetState { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -249,7 +249,7 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
TerrainManager.CreateInitialGroundPlaneAndTerrain();
|
TerrainManager.CreateInitialGroundPlaneAndTerrain();
|
||||||
|
|
||||||
// Put some informational messages into the log file.
|
// Put some informational messages into the log file.
|
||||||
m_log.WarnFormat("{0} Linksets implemented with {1}", LogHeader, (BSLinkset.LinksetImplementation)BSParam.LinksetImplementation);
|
m_log.InfoFormat("{0} Linksets implemented with {1}", LogHeader, (BSLinkset.LinksetImplementation)BSParam.LinksetImplementation);
|
||||||
|
|
||||||
InTaintTime = false;
|
InTaintTime = false;
|
||||||
m_initialized = true;
|
m_initialized = true;
|
||||||
|
@ -374,7 +374,7 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("{0} Selected bullet engine {1} -> {2}/{3}", LogHeader, engineName, ret.BulletEngineName, ret.BulletEngineVersion);
|
m_log.InfoFormat("{0} Selected bullet engine {1} -> {2}/{3}", LogHeader, engineName, ret.BulletEngineName, ret.BulletEngineVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -167,7 +167,7 @@ public abstract class BSShape
|
||||||
// Prevent trying to keep fetching the mesh by declaring failure.
|
// Prevent trying to keep fetching the mesh by declaring failure.
|
||||||
if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched)
|
if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched)
|
||||||
{
|
{
|
||||||
prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
|
prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing;
|
||||||
physicsScene.Logger.WarnFormat("{0} Fetched asset would not mesh. {1}, texture={2}",
|
physicsScene.Logger.WarnFormat("{0} Fetched asset would not mesh. {1}, texture={2}",
|
||||||
LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
||||||
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,setFailed,objNam={1},tex={2}",
|
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,setFailed,objNam={1},tex={2}",
|
||||||
|
@ -177,7 +177,8 @@ public abstract class BSShape
|
||||||
{
|
{
|
||||||
// If this mesh has an underlying asset and we have not failed getting it before, fetch the asset
|
// If this mesh has an underlying asset and we have not failed getting it before, fetch the asset
|
||||||
if (prim.BaseShape.SculptEntry
|
if (prim.BaseShape.SculptEntry
|
||||||
&& prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Failed
|
&& prim.PrimAssetState != BSPhysObject.PrimAssetCondition.FailedAssetFetch
|
||||||
|
&& prim.PrimAssetState != BSPhysObject.PrimAssetCondition.FailedMeshing
|
||||||
&& prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Waiting
|
&& prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Waiting
|
||||||
&& prim.BaseShape.SculptTexture != OMV.UUID.Zero
|
&& prim.BaseShape.SculptTexture != OMV.UUID.Zero
|
||||||
)
|
)
|
||||||
|
@ -219,7 +220,7 @@ public abstract class BSShape
|
||||||
}
|
}
|
||||||
if (!assetFound)
|
if (!assetFound)
|
||||||
{
|
{
|
||||||
yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
|
yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedAssetFetch;
|
||||||
}
|
}
|
||||||
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,fetchAssetCallback,found={1},isSculpt={2},ids={3}",
|
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,fetchAssetCallback,found={1},isSculpt={2},ids={3}",
|
||||||
yprim.LocalID, assetFound, yprim.BaseShape.SculptEntry, mismatchIDs );
|
yprim.LocalID, assetFound, yprim.BaseShape.SculptEntry, mismatchIDs );
|
||||||
|
@ -227,7 +228,7 @@ public abstract class BSShape
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
|
xprim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedAssetFetch;
|
||||||
physicsScene.Logger.ErrorFormat("{0} Physical object requires asset but no asset provider. Name={1}",
|
physicsScene.Logger.ErrorFormat("{0} Physical object requires asset but no asset provider. Name={1}",
|
||||||
LogHeader, physicsScene.Name);
|
LogHeader, physicsScene.Name);
|
||||||
}
|
}
|
||||||
|
@ -235,13 +236,20 @@ public abstract class BSShape
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
|
if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch)
|
||||||
{
|
{
|
||||||
physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}",
|
physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}",
|
||||||
LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
||||||
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailed,objNam={1},tex={2}",
|
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailed,objNam={1},tex={2}",
|
||||||
prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
||||||
}
|
}
|
||||||
|
if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing)
|
||||||
|
{
|
||||||
|
physicsScene.Logger.WarnFormat("{0} Mesh asset would not mesh. obj={1}, texture={2}",
|
||||||
|
LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
||||||
|
physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailedMeshing,objNam={1},tex={2}",
|
||||||
|
prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,7 +382,9 @@ public class BSShapeMesh : BSShape
|
||||||
|
|
||||||
// Check to see if mesh was created (might require an asset).
|
// Check to see if mesh was created (might require an asset).
|
||||||
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
||||||
if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
|
if (!newShape.isNativeShape
|
||||||
|
|| prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing
|
||||||
|
|| prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch)
|
||||||
{
|
{
|
||||||
// If a mesh was what was created, remember the built shape for later sharing.
|
// If a mesh was what was created, remember the built shape for later sharing.
|
||||||
// Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh.
|
// Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh.
|
||||||
|
@ -517,7 +527,7 @@ public class BSShapeMesh : BSShape
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh.
|
// Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh.
|
||||||
prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
|
prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing;
|
||||||
physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}",
|
physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}",
|
||||||
LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name);
|
LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name);
|
||||||
physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey);
|
physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey);
|
||||||
|
@ -559,7 +569,9 @@ public class BSShapeHull : BSShape
|
||||||
|
|
||||||
// Check to see if hull was created (might require an asset).
|
// Check to see if hull was created (might require an asset).
|
||||||
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
||||||
if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
|
if (!newShape.isNativeShape
|
||||||
|
|| prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing
|
||||||
|
|| prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch)
|
||||||
{
|
{
|
||||||
// If a mesh was what was created, remember the built shape for later sharing.
|
// If a mesh was what was created, remember the built shape for later sharing.
|
||||||
Hulls.Add(newHullKey, retHull);
|
Hulls.Add(newHullKey, retHull);
|
||||||
|
@ -1079,10 +1091,13 @@ public class BSShapeGImpact : BSShape
|
||||||
// Check to see if mesh was created (might require an asset).
|
// Check to see if mesh was created (might require an asset).
|
||||||
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
||||||
newShape.shapeKey = newMeshKey;
|
newShape.shapeKey = newMeshKey;
|
||||||
if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
|
if (!newShape.isNativeShape
|
||||||
|
|| prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing
|
||||||
|
|| prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch)
|
||||||
{
|
{
|
||||||
// If a mesh was what was created, remember the built shape for later sharing.
|
// If a mesh was what was created, remember the built shape for later sharing.
|
||||||
// Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh.
|
// Also note that if meshing failed we put it in the mesh list as there is nothing
|
||||||
|
// else to do about the mesh.
|
||||||
GImpacts.Add(newMeshKey, retGImpact);
|
GImpacts.Add(newMeshKey, retGImpact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,6 @@ CURRENT PROBLEMS TO FIX AND/OR LOOK AT
|
||||||
=================================================
|
=================================================
|
||||||
Script changing rotation of child prim while vehicle moving (eg turning wheel) causes
|
Script changing rotation of child prim while vehicle moving (eg turning wheel) causes
|
||||||
the wheel to appear to jump back. Looks like sending position from previous update.
|
the wheel to appear to jump back. Looks like sending position from previous update.
|
||||||
Vehicle ride, get up, ride again. Second time vehicle does not act correctly.
|
|
||||||
Have to rez new vehicle and delete the old to fix situation.
|
|
||||||
Hitting RESET on Nebadon's vehicle while riding causes vehicle to get into odd
|
|
||||||
position state where it will not settle onto ground properly, etc
|
|
||||||
Two of Nebadon vehicles in a sim max the CPU. This is new.
|
|
||||||
Enable vehicle border crossings (at least as poorly as ODE)
|
Enable vehicle border crossings (at least as poorly as ODE)
|
||||||
Terrain skirts
|
Terrain skirts
|
||||||
Avatar created in previous region and not new region when crossing border
|
Avatar created in previous region and not new region when crossing border
|
||||||
|
@ -23,24 +18,17 @@ vehicle angular banking
|
||||||
Center-of-gravity
|
Center-of-gravity
|
||||||
Vehicle angular deflection
|
Vehicle angular deflection
|
||||||
Preferred orientation angular correction fix
|
Preferred orientation angular correction fix
|
||||||
when should angular and linear motor targets be zeroed? when selected?
|
|
||||||
Need a vehicle.clear()? Or an 'else' in prestep if not physical.
|
|
||||||
Teravus llMoveToTarget script debug
|
Teravus llMoveToTarget script debug
|
||||||
Mixing of hover, buoyancy/gravity, moveToTarget, into one force
|
Mixing of hover, buoyancy/gravity, moveToTarget, into one force
|
||||||
Setting hover height to zero disables hover even if hover flags are on (from SL wiki)
|
Setting hover height to zero disables hover even if hover flags are on (from SL wiki)
|
||||||
limitMotorUp calibration (more down?)
|
limitMotorUp calibration (more down?)
|
||||||
llRotLookAt
|
llRotLookAt
|
||||||
llLookAt
|
llLookAt
|
||||||
Avatars walking up stairs (HALF DONE)
|
Convert to avatar mesh capsule. Include rotation of capsule.
|
||||||
Avatar movement
|
|
||||||
flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE)
|
|
||||||
walking up stairs is not calibrated correctly (stairs out of Kepler cabin) (DONE)
|
|
||||||
avatar capsule rotation completed (NOT DONE - Bullet's capsule shape is not the solution)
|
|
||||||
Vehicle script tuning/debugging
|
Vehicle script tuning/debugging
|
||||||
Avanti speed script
|
Avanti speed script
|
||||||
Weapon shooter script
|
Weapon shooter script
|
||||||
Move material definitions (friction, ...) into simulator.
|
Move material definitions (friction, ...) into simulator.
|
||||||
Add material densities to the material types.
|
|
||||||
One sided meshes? Should terrain be built into a closed shape?
|
One sided meshes? Should terrain be built into a closed shape?
|
||||||
When meshes get partially wedged into the terrain, they cannot push themselves out.
|
When meshes get partially wedged into the terrain, they cannot push themselves out.
|
||||||
It is possible that Bullet processes collisions whether entering or leaving a mesh.
|
It is possible that Bullet processes collisions whether entering or leaving a mesh.
|
||||||
|
@ -53,12 +41,8 @@ LINEAR_MOTOR_DIRECTION values should be clamped to reasonable numbers.
|
||||||
Same for other velocity settings.
|
Same for other velocity settings.
|
||||||
UBit improvements to remove rubber-banding of avatars sitting on vehicle child prims:
|
UBit improvements to remove rubber-banding of avatars sitting on vehicle child prims:
|
||||||
https://github.com/UbitUmarov/Ubit-opensim
|
https://github.com/UbitUmarov/Ubit-opensim
|
||||||
Border crossing with linked vehicle causes crash
|
|
||||||
20121129.1411: editting/moving phys object across region boundries causes crash
|
|
||||||
getPos-> btRigidBody::upcast -> getBodyType -> BOOM
|
|
||||||
Vehicles (Move smoothly)
|
Vehicles (Move smoothly)
|
||||||
Some vehicles should not be able to turn if no speed or off ground.
|
Some vehicles should not be able to turn if no speed or off ground.
|
||||||
What to do if vehicle and prim buoyancy differ?
|
|
||||||
Cannot edit/move a vehicle being ridden: it jumps back to the origional position.
|
Cannot edit/move a vehicle being ridden: it jumps back to the origional position.
|
||||||
Neb car jiggling left and right
|
Neb car jiggling left and right
|
||||||
Happens on terrain and any other mesh object. Flat cubes are much smoother.
|
Happens on terrain and any other mesh object. Flat cubes are much smoother.
|
||||||
|
@ -68,8 +52,6 @@ For limitMotorUp, use raycast down to find if vehicle is in the air.
|
||||||
Verify llGetVel() is returning a smooth and good value for vehicle movement.
|
Verify llGetVel() is returning a smooth and good value for vehicle movement.
|
||||||
llGetVel() should return the root's velocity if requested in a child prim.
|
llGetVel() should return the root's velocity if requested in a child prim.
|
||||||
Implement function efficiency for lineaar and angular motion.
|
Implement function efficiency for lineaar and angular motion.
|
||||||
After getting off a vehicle, the root prim is phantom (can be walked through)
|
|
||||||
Need to force a position update for the root prim after compound shape destruction
|
|
||||||
Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint)
|
Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint)
|
||||||
Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties().
|
Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties().
|
||||||
A kludge that isn't fixing the real problem of Bullet adding extra motion.
|
A kludge that isn't fixing the real problem of Bullet adding extra motion.
|
||||||
|
@ -78,11 +60,10 @@ Incorporate inter-relationship of angular corrections. For instance, angularDefl
|
||||||
creates over-correction and over-shoot and wabbling.
|
creates over-correction and over-shoot and wabbling.
|
||||||
Vehicle attributes are not restored when a vehicle is rezzed on region creation
|
Vehicle attributes are not restored when a vehicle is rezzed on region creation
|
||||||
Create vehicle, setup vehicle properties, restart region, vehicle is not reinitialized.
|
Create vehicle, setup vehicle properties, restart region, vehicle is not reinitialized.
|
||||||
|
What to do if vehicle and prim buoyancy differ?
|
||||||
|
|
||||||
GENERAL TODO LIST:
|
GENERAL TODO LIST:
|
||||||
=================================================
|
=================================================
|
||||||
Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects.
|
|
||||||
Regular triangle meshes don't do physical collisions.
|
|
||||||
Resitution of a prim works on another prim but not on terrain.
|
Resitution of a prim works on another prim but not on terrain.
|
||||||
The dropped prim doesn't bounce properly on the terrain.
|
The dropped prim doesn't bounce properly on the terrain.
|
||||||
Add a sanity check for PIDTarget location.
|
Add a sanity check for PIDTarget location.
|
||||||
|
@ -359,4 +340,25 @@ Lock axis (DONE 20130401)
|
||||||
Terrain detail: double terrain mesh detail (DONE)
|
Terrain detail: double terrain mesh detail (DONE)
|
||||||
Use the HACD convex hull routine in Bullet rather than the C# version.
|
Use the HACD convex hull routine in Bullet rather than the C# version.
|
||||||
Speed up hullifying large meshes. (DONE)
|
Speed up hullifying large meshes. (DONE)
|
||||||
|
Vehicle ride, get up, ride again. Second time vehicle does not act correctly.
|
||||||
|
Have to rez new vehicle and delete the old to fix situation.
|
||||||
|
(DONE 20130520: normalize rotations)
|
||||||
|
Hitting RESET on Nebadon's vehicle while riding causes vehicle to get into odd
|
||||||
|
position state where it will not settle onto ground properly, etc
|
||||||
|
(DONE 20130520: normalize rotations)
|
||||||
|
Two of Nebadon vehicles in a sim max the CPU. This is new.
|
||||||
|
(DONE 20130520: two problems: if asset failed to mesh, constantly refetched
|
||||||
|
asset; vehicle was sending too many messages to all linkset members)
|
||||||
|
Add material densities to the material types. (WILL NOT BE DONE: not how it is done)
|
||||||
|
Avatars walking up stairs (DONE)
|
||||||
|
Avatar movement
|
||||||
|
flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE)
|
||||||
|
walking up stairs is not calibrated correctly (stairs out of Kepler cabin) (DONE)
|
||||||
|
avatar capsule rotation completed (NOT DONE - Bullet's capsule shape is not the solution)
|
||||||
|
After getting off a vehicle, the root prim is phantom (can be walked through)
|
||||||
|
Need to force a position update for the root prim after compound shape destruction
|
||||||
|
(DONE)
|
||||||
|
Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects.
|
||||||
|
Regular triangle meshes don't do physical collisions.
|
||||||
|
(DONE: discovered GImpact is VERY CPU intensive)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue