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
|
// 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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue