From 894555d9f607e889b82d594d7ec15ad2bdaca187 Mon Sep 17 00:00:00 2001 From: Mr F Date: Thu, 3 Dec 2015 19:37:14 +0300 Subject: [PATCH 1/2] optimize skinned aabb generation 4 --- src/scene/scene_mesh.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/scene/scene_mesh.js b/src/scene/scene_mesh.js index ff79c8ee37f..620e79dec36 100644 --- a/src/scene/scene_mesh.js +++ b/src/scene/scene_mesh.js @@ -163,9 +163,12 @@ pc.extend(pc, function () { var offsetWF = offsetW / 4; var vertSizeF = vertSize / 4; - var boneVertsArray = []; + var x, y, z; + var boneMin = []; + var boneMax = []; for(i=0; i 0) { index = data8[j * vertSize + offsetI + k]; // Vertex j is affected by bone index - boneVertsArray[index].push( dataF[j * vertSizeF + offsetPF] ); - boneVertsArray[index].push( dataF[j * vertSizeF + offsetPF + 1] ); - boneVertsArray[index].push( dataF[j * vertSizeF + offsetPF + 2] ); + x = dataF[j * vertSizeF + offsetPF]; + y = dataF[j * vertSizeF + offsetPF + 1]; + z = dataF[j * vertSizeF + offsetPF + 2]; + + boneMin[index].x = Math.min(boneMin[index].x, x); + boneMin[index].y = Math.min(boneMin[index].y, y); + boneMin[index].z = Math.min(boneMin[index].z, z); + + boneMax[index].x = Math.max(boneMin[index].x, x); + boneMax[index].y = Math.max(boneMin[index].y, y); + boneMax[index].z = Math.max(boneMin[index].z, z); } } } + var aabb; for(i=0; i Date: Thu, 3 Dec 2015 19:41:19 +0300 Subject: [PATCH 2/2] fix --- src/scene/scene_mesh.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/scene/scene_mesh.js b/src/scene/scene_mesh.js index 620e79dec36..9c551374ddf 100644 --- a/src/scene/scene_mesh.js +++ b/src/scene/scene_mesh.js @@ -184,9 +184,9 @@ pc.extend(pc, function () { boneMin[index].y = Math.min(boneMin[index].y, y); boneMin[index].z = Math.min(boneMin[index].z, z); - boneMax[index].x = Math.max(boneMin[index].x, x); - boneMax[index].y = Math.max(boneMin[index].y, y); - boneMax[index].z = Math.max(boneMin[index].z, z); + boneMax[index].x = Math.max(boneMax[index].x, x); + boneMax[index].y = Math.max(boneMax[index].y, y); + boneMax[index].z = Math.max(boneMax[index].z, z); } } } @@ -195,6 +195,7 @@ pc.extend(pc, function () { for(i=0; i