25 July 2016

iCentrum VR app now on Apple App Store

We have now launched our iCentrum photosphere VR app onto the Apple App Store. Just search for "icentrumvr" to download it to your iPhone. The app has both a VR and non-VR modes. In VR mode you can use it with a Google Cardboard headset for the full immersive experience. In non-VR mode you get a single screen display, and can just move the phone around you in order see the whole of the spherical image.

As with the Android version there 6 images, linked by the red hotspots, and an information zone with more details of the iCentrum building and supporting projects.

21 July 2016

Easy Prop Editing in Fieldscapes

This new feature in Fieldscapes is probably better covered by a blog post rather than a video. With Fieldscapes one of the things that we are trying to do is create a 3D immersive learning environment, player app and authoring app that build on all the good parts of systems like Second Life and Unity, whilst avoiding some of their downsides. One key example with this is prop editing.

In Second Life scripts are associated with objects/props. The only way that you could edit the script was to find and go to the prop, and then click on it to view and edit the scripts. Lots of time wasted! With Unity you always have a list of props available, and can edit any prop directly from the UI, but you've lost the sense of spatial context as you only have a god-like camera.

With Fieldscapes we're trying to implement a best of both worlds. As previously shown you place props by just rezzing them in-world, in front of your avatar, just like Second Life. You can then clcik on the prop to edit its behaviours (just as in SL and sort of Unity). But what we've also now implemented is a Props list, accessible from the left hand Control menu (that might get a better name before release). This builds up a list of props used in the exercise, and at any time you can open the window to see the props list. But also against each prop are a couple of actions:

  • Edit - This immediately opens the behaviour window for that prop, so you can edit any prop from anywhere
  • Teleport (TP) - This immediately jumps your avatar to just in front of the selected prop - so you can remind yourself of its context, and optionally tweak its location or click on it to edit it.

The screenshot below shows the Behaviours window opened for an off-screen prop.

Now that we have the props list we can also begin to change our approach to exercise creation. The most effective way now is to start by just laying out your props, not setting any behaviours, but do name them all. Then you can go and sit your avatar up on some high bluff and just click through each prop in turn to edit it - and with all the other prop names which it may want to reference already being in place.

One by-product of this is that we no longer need a separate location bookmarking system to help with editing. You can just use the props list to jump to anywhere in the exercise, and if you want you could even add some invisible, inactive props at locations that you can to get an edit view from (perhaps an aerial view) but which you don't want to be active elements of the exercise.

We may find other actions to add to the props list in due course (deletion is an obvious one), but even as it stands it significantly speeds the time to develop an exercise.

19 July 2016

New Videos: Multiple Choice for Fieldscapes, and Network Data for Datascape

Several new videos up on our YouTube and Vimeo channels in the last few weeks. The latest ones are:

Multiple Choice in Fieldscapes

How to add a multiple choice question in Fieldscapes. Very much work-in-progress and the final version will be a lot slicker, but the use of the system node approach gives you an incredibly flexible system which can be used for tasks like allowing a student to choose what activity they want to see/do next, as well as using it to give answers to formative or summative tests. Of course since this is a 3D world you can always use objects, or even images, instead of text questions by embedding the question and answer into the environment, rather than use a simple, but familiar, text based option.

Network Data in Datascape

Probably one of the hardest things to deal with in Datascape are network graphs. This video shows how to import and plot network graph data by using two data files, one representing the nodes, and one the links/edges that connect the nodes.

18 July 2016

DadenU Day: Using Resharper

Joe Robbins, Junior Developer writes:

For our recent Daden U day, I decided I would look into Resharper, a suite of tools for improving productivity in Visual Studio. The wealth of features on offer is a bit too great for me to cover exhaustively in this post, but I will be talking about some of the ones that stood out for me, along with my general opinion on the whole package.

I began by watching the video above which gave an overview of the tasks that ReSharper can assist a programmer with. I was impressed immediately, and began to question why some of these features didn’t come with Visual Studio as standard.

Setting up Refactor couldn’t be more straightforward, just sign up for a free trial, download the installer, fire up Visual Studio and you’re good to go.

I then realised that it would be difficult to try out ReSharper in full, as doing so required a pre-existing project. However, I did cobble together some minimalistic C# classes and began playing around with them.

So here’s my list of the top four tasks that ReSharper makes that much easier, although note that this was only based on a few hours of experimentation and I may well discover even better ones over the remainder of my free trial.

Generating constructors

If you’ve spent any significant time doing object oriented programming then you’ll be able to appreciate my first pick. Whenever I create a new class, I tend to start by defining the various properties that need to be included, and then I’ll move onto the constructor. The issue being that most constructors are simply boring, just initialising the properties from the passed arguments.

But thanks to ReSharper, this boredom is a thing of the past.

Simply hit Alt+Enter to bring up the ReSharper menu and select "Generate Code".

Choose “Constructor”.

Tick off the properties that we wish to initialise in our constructor and hit “Finish”.

And there we go, our whole constructor created without a single keystroke.

Surrounding code

Another small touch that could add up to plenty of time saved is the ability to surround code with things such as while loops, or try/catch blocks. ReSharper’s got you covered on that front.

Just highlight the code you wish to surround and press Alt+Enter to bring up the ReSharper menu. Go to "Surround with…" and chose the construct that you want to wrap around the highlighted block.

And ReSharper does the rest, leaving me free to fill in my while condition without having to write any of those pesky braces manually.

Extracting Class from Parameters

Many of us have been in the situation where the parameter list for a method we’re writing just keeps growing and growing. Our programmer conscience nags at us to turn the argument list into its own class, but that’s far too much work.

Let’s say we have a method with a few parameters, like the one here. We can press Ctrl+Shift+R to bring up the ReSharper refactoring menu, and select "Extract Class From Parameters".

We give a name for our new parameter class and describe which parameters we want to include within it.

ReSharper does the rest, producing our new class, along with constructors, getters and setters. It also alters the parameters for our original method to take account of this change.

Move Type to Another File

Sometimes when we code, we will put a small class in the same file as pre-existing one, assuming it will stay small and won’t need to be used elsewhere in the project. Often, however, this is not the case, and when this happens it is good organisational practice to move the second class into its own file.

Simply place the caret next to the name of type we wish to move and press Ctrl+Shift+R to bring up the refactoring menu, then select “Move To Another File”.

Give a name to the new file we’re creating.

Then when we look at our project, we can see that we have a new file which contains the definition of our class.


On the whole, I was very impressed with the power and ease-of-use provided by ReSharper and still feel that I'm only scratching the surface. And that’s before mentioning that the premium version of the plugin comes with tools for performance and memory profiling, unit testing assistance and more.

So do I feel that ReSharper is worth the money (£239 for a year as a new business customer, more info here: https://www.jetbrains.com/resharper/buy/#edition=commercial)? At the moment it is too early to tell, come back to me after I’ve finish my 30-day free trial. What I can tell you is that even during my brief time spent with these tools, I could see how they would fit into my workflow, saving me plenty of time over the course of a project. I wouldn’t be surprised if all that saved time began to cover the cost of getting a licence for this very promising toolbox.

A PDF version of this article with screenshots is available at: http://www.daden.co.uk/docs/ReSharper-DadenUDayBlog.pdf

11 July 2016

3D Objects in Datascape

In the next beta release of Datascape we're adding a wider set of 3D objects, adding a variety of "everyday items" to the base list of platonic solids and other marker variations. The initial list of extra objects looks like this:
  • Bicycle
  • Car
  • Computer
  • Dhow
  • Factory
  • Firewall
  • FishingBoat
  • House
  • Human
  • Liner
  • Lorry
  • Man
  • MobilePhone
  • Monkey
  • Motorbike
  • Office
  • People
  • Plane
  • Raft
  • Server
  • Soldier
  • Speedboat
  • SphereHD
  • Submarine
  • Tank
  • Telephone
  • TreeConical
  • TreeSpherical
  • TreeTriangular
  • Warship
  • Woman
We'll add more based on user feedback, and in due course allow you to add your own by converting from common 3D modelling formats. Bear in mind though that the more complex an object is then the fewer datapoints your PC may let you plot.

A full List of Supported Shapes is available on the Wiki.

One "trick" with Datascape is to have a dataset with a single point at 0,0 and set to a base shape, eg Man - rotated so lying down. They bring your data in in another dataset but set X,Z positions so that the points line up with the base model - which would then let you show for instance frequency of trauma or disease locations on a body, and how they vary over time.