CS 699, week6

Accomplishment:

Thanks for the support from Kevin and Ross, we successfully built a Unity project which realize synchronous playback of 3D video. We have successfully connect the head node with all 6 sub nodes.  We also set the position of each screen based on their location and the position of head. The performance looks good.

Challenges:

Sometimes the video shown on different screens will have a few frame difference. Specially when we loop the video. We will try to download the video and test the video again. The problem may also result from different graphics card settings and hardware configurations.

Plan for next week:

  1. Try to realize cluster launching using python script.
  2. Tune the positions of displays.
  3. Try to add a Kinect system to the environment for head tracking.

Visual Acuity, Post 4

Progress

This week I started to build the workings of the Landolt C test. The test needs to run a specific number of trials, a certain number of times, at specific distances, with rest between the trial attempts. The test also should record a failure and move onto the next trial if 3 seconds pass without a guess. All of the code for that functionality has been written, however it requires multi threading, which ended up taking up most of my time this week.

Struggles

In building the timed component of the test, I ran into an issue with multi-threading. Typically in C# (my experience with it pertains mostly to web development) one would use the System.Timer library to create a timer. However, I need to pass around a bunch of information every time that timer goes off. As that library is geared more towards calling object methods (like service classes for an MVC web application), it’s really not meant for passing info around within the object. The event handler method must be declared as static, so that rout ended there.

The next thing I tried, which took up most of my time, was trying to set up my own medieval multi-threading using Time.DeltaTime from unity itself. Needless to say trying to re-engineer multi-threading myself didn’t go well.

I ended up coming to unity’s co-routine functionality towards the end of my time for the week. I’ll need to learn how that works, and see how I can pass information / call other functions from the event handler for the co-routine call.

Next Week

Once I figure that multi-threading issue, the functionality of the Landolt C test will be complete. Then I’ll be moving onto building a functional UI. Part of why the threading is an issue is because I’m trying to make things as modular / customize-able as possible so that the test can be changed to meet any criteria.

  • Enabling choice of perspective
  • Main menu and test result display UI
  • Prompts for test customization

Visual Acuity, Post 3

Progress

This week I finished off the fixed head method of what i’m calling the Landolt V(virtual) test. Both test types are complete, and record data on the actual position of the C object plane (distance, and which direction the gap is pointed). I started to work on adding hand controls to the test, and building out the rest of the architecture so that this program can run in a standalone fashion outside of unity.

I also started to run tests on myself, and found a few interesting things. First, that the issue noticed in week one where the C began to render in an odd fashion doesn’t carry over into the fixed head position test. Furthermore, in that fixed head position, the C object can get much farther away from the viewer before becoming illegible (visually useless due to rendering). I’m curious to see how others interpret these findings, whether the C becomes illegible at shorter distances for others.

I’m also continuing research into validation. There’s a lot of ophthalmology stuff out there, but none of it directly translates to tests administered on screens, or really talks about validation of a Landolt C test.

Struggles

The vive setup in the dev lab was being particularly uncooperative this weekend, but aside from that and minor frustration as I continue to look for papers relevant to the topic of validating a Landolt C test, progress has been smooth.

Next Week

  • Talk with both Alex and Kevin, get some input on test and have others try it. Also discuss research and direction.
  • Make more progress and finishing out the structure of the application

CS 699, week4

 

Accomplishment:

Thanks for the support from Kevin and Ross, we successfully built an Unity project which realize cluster launching and synchronous playback with one head node and one sub node with two screens.

Challenges:

We are trying to connect more than one sub node. But the video does not show up for the added sub node. I have already confirmed that the additional display should show the video from the head’s position since the Display 3 shows the video when running projects in head node. Therefore, I am not very sure about the reason.

Plan for next week:

  1. Try to figure out the problem and realize the tiled display video part.
  2. Try to add a Kinect system to the environment for head tracking.

 

 

Visual Acuity, Post 2

Progress

This week starting Wednesday I worked toward getting the free head motion Landolt C test running in a virtual environment. For now I’m using the HTC vive, only because it’s what I’m most familiar with (also for convenience). Everything looks good so far, and it behaves as expected.

Before I spend time polishing that up, I wanted to spend time working on the other mode of the test, which is with the C in a fixed viewing position relative to the headset. Instead of trying to mess with the HMD viewing pipeline, I figured out it was easier to just make the plane object the C is displayed on a child of the HMD object in unity. With the background color of the unity scene being the same as the background of the C plane, it essentially accomplishes the same thing as subverting the viewing pipeline to paste an image directly onto it.

As it stands now, the test is additionally capable of the following

  • Presents two viewing modes of the Landolt C test (fixed, non-fixed)
  • (See previous posts for functionality added)

Struggles

I spent far too long trying to do goofy things to get the C plane to be fixed to the screen. Failed efforts include, but are not limited to: trying to use a HUD prefab, breaking the unity viewing pipeline, trying to directly use the HMD display as a monitor.

I also spent the obligatory hour fighting unity versions. The first time I tried to move to a system supporting an HMD I chose to ignore the warning that unity does not support loading projects from newer versions of unity.

I’m also trying to correct the way the C displays. As discussed in the last post, the C itself actually starts to render onto odd numbers of pixels as it gets quite small; changing the nature of the test entirely, I didn’t see the same problem persist into a virtual environment. Admittedly, my own vision just may not be good enough to see when that starts happening.

Next week

  • Get test controls working from the Vive controller
  • Get back to researching proving accuracy of this test
  • Figure out what distances to administer the C test