mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Tango: added min texture cluster size option
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<!-- BEGIN_INCLUDE(manifest) -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.introlab.rtabmap"
|
||||
android:versionCode="39"
|
||||
android:versionCode="40"
|
||||
android:versionName="@RTABMAP_VERSION@">
|
||||
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
@@ -1558,7 +1558,6 @@ bool RTABMapApp::exportMesh(
|
||||
bool meshing,
|
||||
int textureSize,
|
||||
int normalK,
|
||||
float maxTextureDistance,
|
||||
bool optimized,
|
||||
float optimizedVoxelSize,
|
||||
int optimizedDepth,
|
||||
@@ -1566,6 +1565,8 @@ bool RTABMapApp::exportMesh(
|
||||
float optimizedColorRadius,
|
||||
bool optimizedCleanWhitePolygons,
|
||||
bool optimizedColorWhitePolygons, // not yet used
|
||||
float optimizedMaxTextureDistance,
|
||||
int optimizedMinTextureClusterSize,
|
||||
bool blockRendering)
|
||||
{
|
||||
// make sure createdMeshes_ is not modified while exporting! We don't
|
||||
@@ -1991,8 +1992,8 @@ bool RTABMapApp::exportMesh(
|
||||
mesh,
|
||||
cameraPoses,
|
||||
cameraModels,
|
||||
maxTextureDistance,
|
||||
50,
|
||||
optimizedMaxTextureDistance,
|
||||
optimizedMinTextureClusterSize,
|
||||
&progressionStatus_);
|
||||
LOGI("Texturing... done! %fs", timer.ticks());
|
||||
|
||||
|
||||
@@ -151,7 +151,6 @@ class RTABMapApp : public UEventsHandler {
|
||||
bool meshing,
|
||||
int textureSize,
|
||||
int normalK,
|
||||
float maxTextureDistance,
|
||||
bool optimized,
|
||||
float optimizedVoxelSize,
|
||||
int optimizedDepth,
|
||||
@@ -159,6 +158,8 @@ class RTABMapApp : public UEventsHandler {
|
||||
float optimizedColorRadius,
|
||||
bool optimizedCleanWhitePolygons,
|
||||
bool optimizedColorWhitePolygons,
|
||||
float optimizedMaxTextureDistance,
|
||||
int optimizedMinTextureClusterSize,
|
||||
bool blockRendering);
|
||||
bool postExportation(bool visualize);
|
||||
int postProcessing(int approach);
|
||||
|
||||
@@ -312,7 +312,6 @@ Java_com_introlab_rtabmap_RTABMapLib_exportMesh(
|
||||
bool meshing,
|
||||
int textureSize,
|
||||
int normalK,
|
||||
float maxTextureDistance,
|
||||
bool optimized,
|
||||
float optimizedVoxelSize,
|
||||
int optimizedDepth,
|
||||
@@ -320,6 +319,8 @@ Java_com_introlab_rtabmap_RTABMapLib_exportMesh(
|
||||
float optimizedColorRadius,
|
||||
bool optimizedCleanWhitePolygons,
|
||||
bool optimizedColorWhitePolygons,
|
||||
float optimizedMaxTextureDistance,
|
||||
int optimizedMinTextureClusterSize,
|
||||
bool blockRendering)
|
||||
{
|
||||
std::string filePathC;
|
||||
@@ -331,7 +332,6 @@ Java_com_introlab_rtabmap_RTABMapLib_exportMesh(
|
||||
meshing,
|
||||
textureSize,
|
||||
normalK,
|
||||
maxTextureDistance,
|
||||
optimized,
|
||||
optimizedVoxelSize,
|
||||
optimizedDepth,
|
||||
@@ -339,6 +339,8 @@ Java_com_introlab_rtabmap_RTABMapLib_exportMesh(
|
||||
optimizedColorRadius,
|
||||
optimizedCleanWhitePolygons,
|
||||
optimizedColorWhitePolygons,
|
||||
optimizedMaxTextureDistance,
|
||||
optimizedMinTextureClusterSize,
|
||||
blockRendering);
|
||||
}
|
||||
|
||||
|
||||
@@ -65,8 +65,8 @@ const std::string kPointCloudVertexShader =
|
||||
" vLightWeighting = 1.0;\n"
|
||||
" } else {\n"
|
||||
" vec3 transformedNormal = uN * aNormal;\n"
|
||||
" vLightWeighting = max(dot(transformedNormal, uLightingDirection), 0.0);\n"
|
||||
" if(vLightWeighting<0.1) vLightWeighting=0.1;\n"
|
||||
" vLightWeighting = max(dot(transformedNormal, uLightingDirection)*0.5+0.5, 0.0);\n"
|
||||
" if(vLightWeighting<0.5) vLightWeighting=0.5;\n"
|
||||
" }\n"
|
||||
" vColor = aColor;\n"
|
||||
"}\n";
|
||||
@@ -111,8 +111,8 @@ const std::string kTextureMeshVertexShader =
|
||||
" vLightWeighting = 1.0;\n"
|
||||
" } else {\n"
|
||||
" vec3 transformedNormal = uN * aNormal;\n"
|
||||
" vLightWeighting = max(dot(transformedNormal, uLightingDirection), 0.0);\n"
|
||||
" if(vLightWeighting<0.1) vLightWeighting=0.1;\n"
|
||||
" vLightWeighting = max(dot(transformedNormal, uLightingDirection)*0.5+0.5, 0.0);\n"
|
||||
" if(vLightWeighting<0.5) vLightWeighting=0.5;\n"
|
||||
" }\n"
|
||||
"}\n";
|
||||
const std::string kTextureMeshFragmentShader =
|
||||
|
||||
@@ -217,6 +217,14 @@
|
||||
android:entryValues="@array/pref_max_texture_distance_values"
|
||||
android:defaultValue="@string/pref_default_max_texture_distance"/>
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/pref_key_min_texture_cluster_size"
|
||||
android:title="@string/pref_title_min_texture_cluster_size"
|
||||
android:summary="@string/pref_summary_min_texture_cluster_size"
|
||||
android:entries="@array/pref_min_texture_cluster_size_keys"
|
||||
android:entryValues="@array/pref_min_texture_cluster_size_values"
|
||||
android:defaultValue="@string/pref_default_min_texture_cluster_size"/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/pref_key_block_render"
|
||||
android:title="@string/pref_title_block_render"
|
||||
|
||||
@@ -102,6 +102,8 @@
|
||||
<string name="pref_default_normal_k">6</string>
|
||||
<string name="pref_key_max_texture_distance">pref_key_max_texture_distance</string>
|
||||
<string name="pref_default_max_texture_distance">3</string>
|
||||
<string name="pref_key_min_texture_cluster_size">pref_key_min_texture_cluster_size</string>
|
||||
<string name="pref_default_min_texture_cluster_size">50</string>
|
||||
<string name="pref_key_block_render">pref_key_block_render</string>
|
||||
<string name="pref_default_block_render">false</string>
|
||||
<string name="pref_key_opt_depth">pref_key_opt_depth</string>
|
||||
@@ -481,6 +483,8 @@
|
||||
<string name="pref_summary_normal_k">K-nearest neighbors used for normal computation when a mesh is created.</string>
|
||||
<string name="pref_title_max_texture_distance">Max Texture Distance</string>
|
||||
<string name="pref_summary_max_texture_distance">Maximum distance from a camera for polygons to be textured by this camera.</string>
|
||||
<string name="pref_title_min_texture_cluster_size">Min Texture Cluster Size</string>
|
||||
<string name="pref_summary_min_texture_cluster_size">Minimum polygon cluster size to be textured by a camera. This helps to filter sparse textured polygons.</string>
|
||||
<string name="pref_title_block_render">Block Rendering Thread While Exporting</string>
|
||||
<string name="pref_summary_block_render">This decreases exporting time, but freezes rendering while exporting. This also clears temporary the rendered clouds/meshes from memory during exporting, this can be useful to avoid out of memory errors.</string>
|
||||
|
||||
@@ -543,7 +547,25 @@
|
||||
<item>"2.5"</item>
|
||||
<item>"2"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_min_texture_cluster_size_keys">
|
||||
<item>"Disabled"</item>
|
||||
<item>"1000"</item>
|
||||
<item>"500"</item>
|
||||
<item>"200"</item>
|
||||
<item>"100"</item>
|
||||
<item>"50"</item>
|
||||
<item>"10"</item>
|
||||
</string-array>
|
||||
<string-array name="pref_min_texture_cluster_size_values">
|
||||
<item>"0"</item>
|
||||
<item>"1000"</item>
|
||||
<item>"500"</item>
|
||||
<item>"200"</item>
|
||||
<item>"100"</item>
|
||||
<item>"50"</item>
|
||||
<item>"10"</item>
|
||||
</string-array>
|
||||
|
||||
<string name="pref_title_optimized">Optimized</string>
|
||||
<string name="pref_title_opt_voxel">Voxel Size</string>
|
||||
<string name="pref_summary_opt_voxel">Increasing this can reduce reconstruction time at the cost of less geometry precision.</string>
|
||||
|
||||
@@ -1165,8 +1165,8 @@ public class RTABMapActivity extends Activity implements OnClickListener {
|
||||
mButtonShareOnSketchfab.setVisibility(View.VISIBLE);
|
||||
mItemSave.setEnabled(mButtonPause.isChecked());
|
||||
mItemExport.setEnabled(mButtonPause.isChecked() && !mItemDataRecorderMode.isChecked());
|
||||
mItemOpen.setEnabled(mButtonPause.isChecked() && !mItemDataRecorderMode.isChecked());
|
||||
mItemPostProcessing.setEnabled(mButtonPause.isChecked() && !mItemDataRecorderMode.isChecked());
|
||||
mItemOpen.setEnabled(false);
|
||||
mItemPostProcessing.setEnabled(false);
|
||||
mItemSettings.setEnabled(true);
|
||||
mItemReset.setEnabled(true);
|
||||
mItemModes.setEnabled(true);
|
||||
@@ -1721,6 +1721,7 @@ public class RTABMapActivity extends Activity implements OnClickListener {
|
||||
final int textureSize = isOBJ?Integer.parseInt(sharedPref.getString(getString(R.string.pref_key_texture_size), getString(R.string.pref_default_texture_size))):0;
|
||||
final int normalK = Integer.parseInt(sharedPref.getString(getString(R.string.pref_key_normal_k), getString(R.string.pref_default_normal_k)));
|
||||
final float maxTextureDistance = Float.parseFloat(sharedPref.getString(getString(R.string.pref_key_max_texture_distance), getString(R.string.pref_default_max_texture_distance)));
|
||||
final int minTextureClusterSize = Integer.parseInt(sharedPref.getString(getString(R.string.pref_key_min_texture_cluster_size), getString(R.string.pref_default_min_texture_cluster_size)));
|
||||
final float optimizedVoxelSize = cloudVoxelSize;
|
||||
final int optimizedDepth = Integer.parseInt(sharedPref.getString(getString(R.string.pref_key_opt_depth), getString(R.string.pref_default_opt_depth)));
|
||||
final float optimizedColorRadius = Float.parseFloat(sharedPref.getString(getString(R.string.pref_key_opt_color_radius), getString(R.string.pref_default_opt_color_radius)));
|
||||
@@ -1752,7 +1753,6 @@ public class RTABMapActivity extends Activity implements OnClickListener {
|
||||
meshing,
|
||||
textureSize,
|
||||
normalK,
|
||||
maxTextureDistance,
|
||||
optimized,
|
||||
optimizedVoxelSize,
|
||||
optimizedDepth,
|
||||
@@ -1760,6 +1760,8 @@ public class RTABMapActivity extends Activity implements OnClickListener {
|
||||
optimizedColorRadius,
|
||||
optimizedCleanWhitePolygons,
|
||||
optimizedColorWhitePolygons,
|
||||
maxTextureDistance,
|
||||
minTextureClusterSize,
|
||||
blockRendering);
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
|
||||
@@ -94,7 +94,6 @@ public class RTABMapLib
|
||||
boolean meshing,
|
||||
int textureSize,
|
||||
int normalK,
|
||||
float maxTextureDistance,
|
||||
boolean optimized,
|
||||
float optimizedVoxelSize,
|
||||
int optimizedDepth,
|
||||
@@ -102,6 +101,8 @@ public class RTABMapLib
|
||||
float optimizedColorRadius,
|
||||
boolean optimizedCleanWhitePolygons,
|
||||
boolean optimizedColorWhitePolygons,
|
||||
float optimizedMaxTextureDistance,
|
||||
int optimizedMinTextureClusterSize,
|
||||
boolean blockRendering);
|
||||
public static native boolean postExportation(boolean visualize);
|
||||
public static native int postProcessing(int approach);
|
||||
|
||||
@@ -50,6 +50,7 @@ public class SettingsActivity extends PreferenceActivity implements OnSharedPref
|
||||
((Preference)findPreference(getString(R.string.pref_key_texture_size))).setSummary("("+((ListPreference)findPreference(getString(R.string.pref_key_texture_size))).getEntry() + ") "+getString(R.string.pref_summary_texture_size));
|
||||
((Preference)findPreference(getString(R.string.pref_key_normal_k))).setSummary("("+((ListPreference)findPreference(getString(R.string.pref_key_normal_k))).getEntry() + ") "+getString(R.string.pref_summary_normal_k));
|
||||
((Preference)findPreference(getString(R.string.pref_key_max_texture_distance))).setSummary("("+((ListPreference)findPreference(getString(R.string.pref_key_max_texture_distance))).getEntry() + ") "+getString(R.string.pref_summary_max_texture_distance));
|
||||
((Preference)findPreference(getString(R.string.pref_key_min_texture_cluster_size))).setSummary("("+((ListPreference)findPreference(getString(R.string.pref_key_min_texture_cluster_size))).getEntry() + ") "+getString(R.string.pref_summary_min_texture_cluster_size));
|
||||
|
||||
((Preference)findPreference(getString(R.string.pref_key_opt_depth))).setSummary("("+((ListPreference)findPreference(getString(R.string.pref_key_opt_depth))).getEntry() + ") "+getString(R.string.pref_summary_opt_depth));
|
||||
((Preference)findPreference(getString(R.string.pref_key_opt_color_radius))).setSummary("("+((ListPreference)findPreference(getString(R.string.pref_key_opt_color_radius))).getEntry() + ") "+getString(R.string.pref_summary_opt_color_radius));
|
||||
@@ -84,6 +85,7 @@ public class SettingsActivity extends PreferenceActivity implements OnSharedPref
|
||||
if(key.compareTo(getString(R.string.pref_key_texture_size))==0) pref.setSummary("("+((ListPreference)pref).getEntry() + ") "+getString(R.string.pref_summary_texture_size));
|
||||
if(key.compareTo(getString(R.string.pref_key_normal_k))==0) pref.setSummary("("+((ListPreference)pref).getEntry() + ") "+getString(R.string.pref_summary_normal_k));
|
||||
if(key.compareTo(getString(R.string.pref_key_max_texture_distance))==0) pref.setSummary("("+((ListPreference)pref).getEntry() + ") "+getString(R.string.pref_summary_max_texture_distance));
|
||||
if(key.compareTo(getString(R.string.pref_key_min_texture_cluster_size))==0) pref.setSummary("("+((ListPreference)pref).getEntry() + ") "+getString(R.string.pref_summary_min_texture_cluster_size));
|
||||
|
||||
if(key.compareTo(getString(R.string.pref_key_opt_depth))==0) pref.setSummary("("+((ListPreference)pref).getEntry() + ") "+getString(R.string.pref_summary_opt_depth));
|
||||
if(key.compareTo(getString(R.string.pref_key_opt_color_radius))==0) pref.setSummary("("+((ListPreference)pref).getEntry() + ") "+getString(R.string.pref_summary_opt_color_radius));
|
||||
|
||||
Reference in New Issue
Block a user