Skip to content

Commit

Permalink
Merge pull request #300 from natacha-beck/centric_rotation
Browse files Browse the repository at this point in the history
First tries to recenter user model to origin
  • Loading branch information
Robert D Vincent committed May 27, 2016
2 parents cf79ab1 + 9f06f53 commit b9abdb8
Show file tree
Hide file tree
Showing 4 changed files with 196 additions and 66 deletions.
5 changes: 5 additions & 0 deletions examples/surface-viewer-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,11 @@ <h4>Views:</h4>
<p>
<input id="axes-controls" type="checkbox">Display axes<br />
</p>
<p>
<div>
<input type="checkbox" id="model_centric"><label for="model_centric">Origin corresponds to model's center</label>
</div>
</p>
<p>
<a class="button" id="resetview">Reset View</a>
<input type="checkbox" class="button" id="meshmode"><label for="meshmode">Mesh Mode</label>
Expand Down
35 changes: 24 additions & 11 deletions examples/surface-viewer-demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,11 @@ $(function() {

});

// Origin position
$("#model_centric").change(function() {
viewer.modelCentric($(this).is(":checked"));
});

// Color map URLs are read from the config file and added to the
// color map select box.
var color_map_select = $('<select id="color-map-select"></select>').change(function() {
Expand All @@ -511,6 +516,7 @@ $(function() {
viewer.clearScreen();
current_request = 0;
current_request_name = "";
document.getElementById("model_centric").checked = false;
loading_div.hide();
});

Expand All @@ -519,8 +525,8 @@ $(function() {
if (viewer.model.children.length === 0) return;

var annotation_display = $("#annotation-display");
var media = $("#annotation-media");
var pick_info = viewer.pick();
var media = $("#annotation-media");
var pick_info = viewer.pick();
var model_data, intensity_data;
var annotation_info;
var value, label, text;
Expand All @@ -532,8 +538,8 @@ $(function() {
$("#pick-index").html(pick_info.index);
$("#annotation-wrapper").show();

picked_object = pick_info.object;
model_data = viewer.model_data.get(picked_object.userData.model_name);
picked_object = pick_info.object;
model_data = viewer.model_data.get(picked_object.userData.model_name);
intensity_data = model_data.intensity_data[0];

if (intensity_data) {
Expand Down Expand Up @@ -634,9 +640,9 @@ $(function() {
});

$("#annotation-save").click(function() {
var vertex_num = parseInt($("#pick-index").html(), 10);
var vertex_num = parseInt($("#pick-index").html(), 10);
var annotation_display = $("#annotation-display");
var media = $("#annotation-media");
var media = $("#annotation-media");

var annotation, annotation_data;
var vertex;
Expand All @@ -658,15 +664,15 @@ $(function() {
vertex = viewer.getVertex(vertex_num);

annotation_data.image = $("#annotation-image").val();
annotation_data.url = $("#annotation-url").val();
annotation_data.text = $("#annotation-text").val();
annotation_data.url = $("#annotation-url").val();
annotation_data.text = $("#annotation-text").val();

media.html("");

if (annotation_data.image) {
var image = new Image();
var image = new Image();
image.width = 200;
image.src = annotation_data.image;
image.src = annotation_data.image;
annotation_display.show();
media.append(image);
}
Expand Down Expand Up @@ -914,7 +920,14 @@ $(function() {
showLoading();
viewer.loadModelFromFile(document.getElementById("objfile"), {
format: format,
complete: hideLoading
complete: function() {
document.getElementById("model_centric").checked = true;
viewer.modelCentric(true);
$("#vertex-data-wrapper").show();
$("#pick-value-wrapper").show();
$("#pick-label-wrapper").show();
hideLoading();
}
});

return false;
Expand Down
80 changes: 40 additions & 40 deletions src/brainbrowser/surface-viewer/modules/loading.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {
* function. The function will receive the model description and the model name
* as arguments.
* ```js
* viewer.model_data.forEach(function(mode_data, model_name) {
* viewer.model_data.forEach(function(model_data, model_name) {
* console.log(model_name, model_data.vertices.length);
* });
* ```
Expand Down Expand Up @@ -363,9 +363,9 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {
////////////////////////////////////

function loadModel(data, filename, options) {
options = options || {};
var type = options.format || "mniobj";
var parse_options = options.parse || {};
options = options || {};
var type = options.format || "mniobj";
var parse_options = options.parse || {};

// Parse model info based on the given file type.
parseModel(data, type, parse_options, function(model_data) {
Expand All @@ -376,12 +376,12 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {
}

function loadIntensityData(text, filename, options) {
options = options || {};
var name = options.name || filename;
var type = options.format || "text";
var blend = options.blend;
var model_name = options.model_name;
var model_data = viewer.model_data.get(model_name);
options = options || {};
var name = options.name || filename;
var type = options.format || "text";
var blend = options.blend;
var model_name = options.model_name;
var model_data = viewer.model_data.get(model_name);
var intensity_data = model_data.intensity_data[0];

var old_range = {};
Expand Down Expand Up @@ -564,18 +564,18 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {
///////////////////////////////////////////

// Creates three.js objects based on the
// description in **model_data** and
// description in **model_data** and
// displays in on the viewer.
function displayModel(model_data, filename, options) {
options = options || {};
options = options || {};
var complete = options.complete;

var new_shapes = createModel(model_data, filename, options);

viewer.triggerEvent("displaymodel", {
model: viewer.model,
model: viewer.model,
model_data: model_data,
new_shapes: new_shapes
new_shapes: new_shapes,
});

if (complete) complete();
Expand All @@ -586,13 +586,13 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {
// object, though they may share attributes and
// buffers.
function createModel(model_data, filename, options){
var model = viewer.model;
var shapes = model_data.shapes;
var is_line = model_data.type === "line";
var render_depth = options.render_depth;
var pick_ignore = options.pick_ignore;
var recenter = options.recenter || model_data.split;
var new_shapes = [];
var model = viewer.model;
var shapes = model_data.shapes;
var is_line = model_data.type === "line";
var render_depth = options.render_depth;
var pick_ignore = options.pick_ignore;
var recenter = options.recenter || model_data.split;
var new_shapes = [];
var shape, shape_data;
var i, count;
var object_description = {is_line: is_line};
Expand Down Expand Up @@ -628,9 +628,9 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {

object_description = {
position: position_buffer,
normal: normal_buffer,
color: color_buffer,
index: new THREE.BufferAttribute(new Uint32Array(shape_data.indices), 1),
normal: normal_buffer,
color: color_buffer,
index: new THREE.BufferAttribute(new Uint32Array(shape_data.indices), 1),
};

} else {
Expand All @@ -649,26 +649,26 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {

object_description = {
position: position_buffer,
normal: normal_buffer,
color: color_buffer
normal: normal_buffer,
color: color_buffer
};

}

object_description.is_line = is_line;
object_description.is_line = is_line;
object_description.centroid = shape_data.centroid;
object_description.recenter = recenter;

shape = createShape(object_description);
shape = createShape(object_description);
shape.name = shape_data.name || filename + "_" + (i + 1);

shape.userData.model_name = model_data.name;

shape.userData.original_data = {
vertices: model_data.vertices,
indices: shape_data.indices,
normals: model_data.normals,
colors: model_data.colors
indices: shape_data.indices,
normals: model_data.normals,
colors: model_data.colors,
};

shape.userData.pick_ignore = pick_ignore;
Expand All @@ -694,14 +694,14 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {
// a shape from the model data 'shapes'
// array.
function createShape(object_description) {
var position = object_description.position;
var position = object_description.position;
var position_array = position.array;
var normal = object_description.normal;
var color = object_description.color;
var index = object_description.index;
var centroid = object_description.centroid;
var is_line = object_description.is_line;
var recenter = object_description.recenter;
var normal = object_description.normal;
var color = object_description.color;
var index = object_description.index;
var centroid = object_description.centroid;
var is_line = object_description.is_line;
var recenter = object_description.recenter;

var geometry = new THREE.BufferGeometry();
var index_array, tmp_position_array, position_index;
Expand Down Expand Up @@ -748,10 +748,10 @@ BrainBrowser.SurfaceViewer.modules.loading = function(viewer) {

if (is_line) {
material = new THREE.LineBasicMaterial({vertexColors: THREE.VertexColors});
shape = new THREE.Line(geometry, material, THREE.LinePieces);
shape = new THREE.Line(geometry, material, THREE.LinePieces);
} else {
material = new THREE.MeshPhongMaterial({color: 0xFFFFFF, ambient: 0xFFFFFF, specular: 0x101010, shininess: 150, vertexColors: THREE.VertexColors});
shape = new THREE.Mesh(geometry, material);
shape = new THREE.Mesh(geometry, material);
shape.userData.has_wireframe = true;
}

Expand Down
Loading

0 comments on commit b9abdb8

Please sign in to comment.