tweaks and debug cleanup

This commit is contained in:
ZappoMan 2014-12-06 10:59:48 -08:00
parent ec907d1d1d
commit 303274a554
3 changed files with 14 additions and 39 deletions

View file

@ -172,11 +172,9 @@ void RenderableModelEntityItem::render(RenderArgs* args) {
// TODO: this is the majority of model render time. And rendering of a cube model vs the basic Box render // TODO: this is the majority of model render time. And rendering of a cube model vs the basic Box render
// is significantly more expensive. Is there a way to call this that doesn't cost us as much? // is significantly more expensive. Is there a way to call this that doesn't cost us as much?
PerformanceTimer perfTimer("model->render"); PerformanceTimer perfTimer("model->render");
bool dontRenderAsScene = true; // Menu::getInstance()->isOptionChecked(MenuOption::DontRenderEntitiesAsScene); bool dontRenderAsScene = Menu::getInstance()->isOptionChecked(MenuOption::DontRenderEntitiesAsScene);
if (dontRenderAsScene) { if (dontRenderAsScene) {
if (!_model->renderTriangleProxies()) { _model->render(alpha, modelRenderMode, args);
_model->render(alpha, modelRenderMode, args);
}
} else { } else {
_model->renderInScene(alpha, args); _model->renderInScene(alpha, args);
} }

View file

@ -571,8 +571,8 @@ bool Model::renderTriangleProxies() {
return _calculatedMeshTrianglesValid; return _calculatedMeshTrianglesValid;
} }
bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance,
float& distance, BoxFace& face, QString& extraInfo) { BoxFace& face, QString& extraInfo, bool pickAgainstTriangles) {
bool intersectedSomething = false; bool intersectedSomething = false;
@ -581,8 +581,6 @@ bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const g
return intersectedSomething; return intersectedSomething;
} }
bool pickAgainstTriangles = Menu::getInstance()->isOptionChecked(MenuOption::PickAgainstModelTriangles);
//qDebug() << "Model::findRayIntersectionAgainstSubMeshes()..."; //qDebug() << "Model::findRayIntersectionAgainstSubMeshes()...";
//qDebug() << " origin:" << origin; //qDebug() << " origin:" << origin;
//qDebug() << " direction:" << direction; //qDebug() << " direction:" << direction;
@ -706,13 +704,10 @@ bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const g
return intersectedSomething; return intersectedSomething;
} }
void Model::recalcuateMeshBoxes() { void Model::recalcuateMeshBoxes(bool pickAgainstTriangles) {
bool pickAgainstTriangles = Menu::getInstance()->isOptionChecked(MenuOption::PickAgainstModelTriangles);
bool calculatedMeshTrianglesNeeded = pickAgainstTriangles && !_calculatedMeshTrianglesValid; bool calculatedMeshTrianglesNeeded = pickAgainstTriangles && !_calculatedMeshTrianglesValid;
if (!_calculatedMeshBoxesValid || calculatedMeshTrianglesNeeded) { if (!_calculatedMeshBoxesValid || calculatedMeshTrianglesNeeded) {
qDebug() << "************************************************************************************************";
qDebug() << "Model::recalcuateMeshBoxes() -------------------------------------------------------------------";
PerformanceTimer perfTimer("calculatedMeshBoxes"); PerformanceTimer perfTimer("calculatedMeshBoxes");
const FBXGeometry& geometry = _geometry->getFBXGeometry(); const FBXGeometry& geometry = _geometry->getFBXGeometry();
int numberOfMeshes = geometry.meshes.size(); int numberOfMeshes = geometry.meshes.size();
@ -723,16 +718,9 @@ void Model::recalcuateMeshBoxes() {
const FBXMesh& mesh = geometry.meshes.at(i); const FBXMesh& mesh = geometry.meshes.at(i);
Extents scaledMeshExtents = calculateScaledOffsetExtents(mesh.meshExtents); Extents scaledMeshExtents = calculateScaledOffsetExtents(mesh.meshExtents);
qDebug() << "mesh.meshExtents["<<i<<"]:" << mesh.meshExtents;
qDebug() << "scaledMeshExtents["<<i<<"]:" << scaledMeshExtents;
_calculatedMeshBoxes[i] = AABox(scaledMeshExtents); _calculatedMeshBoxes[i] = AABox(scaledMeshExtents);
qDebug() << "_calculatedMeshBoxes["<<i<<"]:" << _calculatedMeshBoxes[i];
if (pickAgainstTriangles) { if (pickAgainstTriangles) {
qDebug() << "mesh.parts.size():" << mesh.parts.size();
qDebug() << "---- calculating triangles for mesh parts for mesh:" << i << " ----------";
QVector<Triangle> thisMeshTriangles; QVector<Triangle> thisMeshTriangles;
for (int j = 0; j < mesh.parts.size(); j++) { for (int j = 0; j < mesh.parts.size(); j++) {
const FBXMeshPart& part = mesh.parts.at(j); const FBXMeshPart& part = mesh.parts.at(j);
@ -742,7 +730,6 @@ void Model::recalcuateMeshBoxes() {
if (part.quadIndices.size() > 0) { if (part.quadIndices.size() > 0) {
int numberOfQuads = part.quadIndices.size() / INDICES_PER_QUAD; int numberOfQuads = part.quadIndices.size() / INDICES_PER_QUAD;
qDebug() << "numberOfQuads:" << numberOfQuads;
int vIndex = 0; int vIndex = 0;
for (int q = 0; q < numberOfQuads; q++) { for (int q = 0; q < numberOfQuads; q++) {
int i0 = part.quadIndices[vIndex++]; int i0 = part.quadIndices[vIndex++];
@ -755,18 +742,14 @@ void Model::recalcuateMeshBoxes() {
glm::vec3 v2 = calculateScaledOffsetPoint(glm::vec3(mesh.modelTransform * glm::vec4(mesh.vertices[i2], 1.0f))); glm::vec3 v2 = calculateScaledOffsetPoint(glm::vec3(mesh.modelTransform * glm::vec4(mesh.vertices[i2], 1.0f)));
glm::vec3 v3 = calculateScaledOffsetPoint(glm::vec3(mesh.modelTransform * glm::vec4(mesh.vertices[i3], 1.0f))); glm::vec3 v3 = calculateScaledOffsetPoint(glm::vec3(mesh.modelTransform * glm::vec4(mesh.vertices[i3], 1.0f)));
// Sam's // Sam's recommended triangle slices
//Triangle tri1 = { v0, v1, v3 }; Triangle tri1 = { v0, v1, v3 };
//Triangle tri2 = { v1, v2, v3 }; Triangle tri2 = { v1, v2, v3 };
// triangle 0 1 2 // NOTE: Random guy on the internet's recommended triangle slices
// triangle 2 3 0 //Triangle tri1 = { v0, v1, v2 };
Triangle tri1 = { v0, v1, v2 }; //Triangle tri2 = { v2, v3, v0 };
Triangle tri2 = { v2, v3, v0 };
//qDebug() << "quad["<< q <<"].t1 :" << v0 << ", "<< v1 << ", " << v3;
//qDebug() << "quad["<< q <<"].t2 :" << v1 << ", "<< v2 << ", " << v3;
thisMeshTriangles.push_back(tri1); thisMeshTriangles.push_back(tri1);
thisMeshTriangles.push_back(tri2); thisMeshTriangles.push_back(tri2);
} }
@ -774,7 +757,6 @@ void Model::recalcuateMeshBoxes() {
if (part.triangleIndices.size() > 0) { if (part.triangleIndices.size() > 0) {
int numberOfTris = part.triangleIndices.size() / INDICES_PER_TRIANGLE; int numberOfTris = part.triangleIndices.size() / INDICES_PER_TRIANGLE;
qDebug() << "numberOfTris:" << numberOfTris;
int vIndex = 0; int vIndex = 0;
for (int t = 0; t < numberOfTris; t++) { for (int t = 0; t < numberOfTris; t++) {
int i0 = part.triangleIndices[vIndex++]; int i0 = part.triangleIndices[vIndex++];
@ -787,17 +769,12 @@ void Model::recalcuateMeshBoxes() {
Triangle tri = { v0, v1, v2 }; Triangle tri = { v0, v1, v2 };
//qDebug() << "triangle["<< t <<"] :" << v0 << ", " << v1 << ", " << v2;
thisMeshTriangles.push_back(tri); thisMeshTriangles.push_back(tri);
} }
} }
} }
_calculatedMeshTriangles[i] = thisMeshTriangles; _calculatedMeshTriangles[i] = thisMeshTriangles;
qDebug() << "------------------------------------------------------------------------------";
} }
} }
_calculatedMeshBoxesValid = true; _calculatedMeshBoxesValid = true;
_calculatedMeshTrianglesValid = pickAgainstTriangles; _calculatedMeshTrianglesValid = pickAgainstTriangles;

View file

@ -197,8 +197,8 @@ public:
Q_INVOKABLE void setTextureWithNameToURL(const QString& name, const QUrl& url) Q_INVOKABLE void setTextureWithNameToURL(const QString& name, const QUrl& url)
{ _geometry->setTextureWithNameToURL(name, url); } { _geometry->setTextureWithNameToURL(name, url); }
bool findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, bool findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance,
float& distance, BoxFace& face, QString& extraInfo); BoxFace& face, QString& extraInfo, bool pickAgainstTriangles = false);
protected: protected:
QSharedPointer<NetworkGeometry> _geometry; QSharedPointer<NetworkGeometry> _geometry;
@ -371,7 +371,7 @@ private:
QVector< QVector<Triangle> > _calculatedMeshTriangles; // world coordinate triangles for all sub meshes QVector< QVector<Triangle> > _calculatedMeshTriangles; // world coordinate triangles for all sub meshes
bool _calculatedMeshTrianglesValid; bool _calculatedMeshTrianglesValid;
void recalcuateMeshBoxes(); void recalcuateMeshBoxes(bool pickAgainstTriangles = false);
void segregateMeshGroups(); // used to calculate our list of translucent vs opaque meshes void segregateMeshGroups(); // used to calculate our list of translucent vs opaque meshes