mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
tweaks and debug cleanup
This commit is contained in:
parent
ec907d1d1d
commit
303274a554
3 changed files with 14 additions and 39 deletions
|
@ -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
|
||||
// is significantly more expensive. Is there a way to call this that doesn't cost us as much?
|
||||
PerformanceTimer perfTimer("model->render");
|
||||
bool dontRenderAsScene = true; // Menu::getInstance()->isOptionChecked(MenuOption::DontRenderEntitiesAsScene);
|
||||
bool dontRenderAsScene = Menu::getInstance()->isOptionChecked(MenuOption::DontRenderEntitiesAsScene);
|
||||
if (dontRenderAsScene) {
|
||||
if (!_model->renderTriangleProxies()) {
|
||||
_model->render(alpha, modelRenderMode, args);
|
||||
}
|
||||
_model->render(alpha, modelRenderMode, args);
|
||||
} else {
|
||||
_model->renderInScene(alpha, args);
|
||||
}
|
||||
|
|
|
@ -571,8 +571,8 @@ bool Model::renderTriangleProxies() {
|
|||
return _calculatedMeshTrianglesValid;
|
||||
}
|
||||
|
||||
bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction,
|
||||
float& distance, BoxFace& face, QString& extraInfo) {
|
||||
bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance,
|
||||
BoxFace& face, QString& extraInfo, bool pickAgainstTriangles) {
|
||||
|
||||
bool intersectedSomething = false;
|
||||
|
||||
|
@ -581,8 +581,6 @@ bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const g
|
|||
return intersectedSomething;
|
||||
}
|
||||
|
||||
bool pickAgainstTriangles = Menu::getInstance()->isOptionChecked(MenuOption::PickAgainstModelTriangles);
|
||||
|
||||
//qDebug() << "Model::findRayIntersectionAgainstSubMeshes()...";
|
||||
//qDebug() << " origin:" << origin;
|
||||
//qDebug() << " direction:" << direction;
|
||||
|
@ -706,13 +704,10 @@ bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const g
|
|||
return intersectedSomething;
|
||||
}
|
||||
|
||||
void Model::recalcuateMeshBoxes() {
|
||||
bool pickAgainstTriangles = Menu::getInstance()->isOptionChecked(MenuOption::PickAgainstModelTriangles);
|
||||
void Model::recalcuateMeshBoxes(bool pickAgainstTriangles) {
|
||||
bool calculatedMeshTrianglesNeeded = pickAgainstTriangles && !_calculatedMeshTrianglesValid;
|
||||
|
||||
if (!_calculatedMeshBoxesValid || calculatedMeshTrianglesNeeded) {
|
||||
qDebug() << "************************************************************************************************";
|
||||
qDebug() << "Model::recalcuateMeshBoxes() -------------------------------------------------------------------";
|
||||
PerformanceTimer perfTimer("calculatedMeshBoxes");
|
||||
const FBXGeometry& geometry = _geometry->getFBXGeometry();
|
||||
int numberOfMeshes = geometry.meshes.size();
|
||||
|
@ -723,16 +718,9 @@ void Model::recalcuateMeshBoxes() {
|
|||
const FBXMesh& mesh = geometry.meshes.at(i);
|
||||
Extents scaledMeshExtents = calculateScaledOffsetExtents(mesh.meshExtents);
|
||||
|
||||
qDebug() << "mesh.meshExtents["<<i<<"]:" << mesh.meshExtents;
|
||||
qDebug() << "scaledMeshExtents["<<i<<"]:" << scaledMeshExtents;
|
||||
|
||||
_calculatedMeshBoxes[i] = AABox(scaledMeshExtents);
|
||||
|
||||
qDebug() << "_calculatedMeshBoxes["<<i<<"]:" << _calculatedMeshBoxes[i];
|
||||
|
||||
if (pickAgainstTriangles) {
|
||||
qDebug() << "mesh.parts.size():" << mesh.parts.size();
|
||||
qDebug() << "---- calculating triangles for mesh parts for mesh:" << i << " ----------";
|
||||
QVector<Triangle> thisMeshTriangles;
|
||||
for (int j = 0; j < mesh.parts.size(); j++) {
|
||||
const FBXMeshPart& part = mesh.parts.at(j);
|
||||
|
@ -742,7 +730,6 @@ void Model::recalcuateMeshBoxes() {
|
|||
|
||||
if (part.quadIndices.size() > 0) {
|
||||
int numberOfQuads = part.quadIndices.size() / INDICES_PER_QUAD;
|
||||
qDebug() << "numberOfQuads:" << numberOfQuads;
|
||||
int vIndex = 0;
|
||||
for (int q = 0; q < numberOfQuads; q++) {
|
||||
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 v3 = calculateScaledOffsetPoint(glm::vec3(mesh.modelTransform * glm::vec4(mesh.vertices[i3], 1.0f)));
|
||||
|
||||
// Sam's
|
||||
//Triangle tri1 = { v0, v1, v3 };
|
||||
//Triangle tri2 = { v1, v2, v3 };
|
||||
// Sam's recommended triangle slices
|
||||
Triangle tri1 = { v0, v1, v3 };
|
||||
Triangle tri2 = { v1, v2, v3 };
|
||||
|
||||
// triangle 0 1 2
|
||||
// triangle 2 3 0
|
||||
Triangle tri1 = { v0, v1, v2 };
|
||||
Triangle tri2 = { v2, v3, v0 };
|
||||
// NOTE: Random guy on the internet's recommended triangle slices
|
||||
//Triangle tri1 = { v0, v1, v2 };
|
||||
//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(tri2);
|
||||
}
|
||||
|
@ -774,7 +757,6 @@ void Model::recalcuateMeshBoxes() {
|
|||
|
||||
if (part.triangleIndices.size() > 0) {
|
||||
int numberOfTris = part.triangleIndices.size() / INDICES_PER_TRIANGLE;
|
||||
qDebug() << "numberOfTris:" << numberOfTris;
|
||||
int vIndex = 0;
|
||||
for (int t = 0; t < numberOfTris; t++) {
|
||||
int i0 = part.triangleIndices[vIndex++];
|
||||
|
@ -787,17 +769,12 @@ void Model::recalcuateMeshBoxes() {
|
|||
|
||||
Triangle tri = { v0, v1, v2 };
|
||||
|
||||
//qDebug() << "triangle["<< t <<"] :" << v0 << ", " << v1 << ", " << v2;
|
||||
|
||||
thisMeshTriangles.push_back(tri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_calculatedMeshTriangles[i] = thisMeshTriangles;
|
||||
qDebug() << "------------------------------------------------------------------------------";
|
||||
}
|
||||
|
||||
}
|
||||
_calculatedMeshBoxesValid = true;
|
||||
_calculatedMeshTrianglesValid = pickAgainstTriangles;
|
||||
|
|
|
@ -197,8 +197,8 @@ public:
|
|||
Q_INVOKABLE void setTextureWithNameToURL(const QString& name, const QUrl& url)
|
||||
{ _geometry->setTextureWithNameToURL(name, url); }
|
||||
|
||||
bool findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction,
|
||||
float& distance, BoxFace& face, QString& extraInfo);
|
||||
bool findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance,
|
||||
BoxFace& face, QString& extraInfo, bool pickAgainstTriangles = false);
|
||||
|
||||
protected:
|
||||
QSharedPointer<NetworkGeometry> _geometry;
|
||||
|
@ -371,7 +371,7 @@ private:
|
|||
QVector< QVector<Triangle> > _calculatedMeshTriangles; // world coordinate triangles for all sub meshes
|
||||
bool _calculatedMeshTrianglesValid;
|
||||
|
||||
void recalcuateMeshBoxes();
|
||||
void recalcuateMeshBoxes(bool pickAgainstTriangles = false);
|
||||
|
||||
void segregateMeshGroups(); // used to calculate our list of translucent vs opaque meshes
|
||||
|
||||
|
|
Loading…
Reference in a new issue