Indie VR & Game Developer

Hello! I'm Jason.

I'm a computer programmer with almost 2 decades of experience, now trying to transition from a hobby to a career. I've spent the last several years learning game development with the Unity game engine, and specialize in C# scripting.

I publish my own assets on the Unity Asset Store, aspire to make my own games, and will entertain offers for jobs on projects that suit my skills and interests.

Please enjoy my projects, consider my services, and contact me anytime!

Find Out More

Projects

Showing posts with label Update. Show all posts
Showing posts with label Update. Show all posts

Thursday, January 28, 2021

Update: VR3DMediaViewer v2.5



VR3DMediaViewer has been updated to v2.5!

I fixed a long reported, but not reproducible by me, issue. The issue was with the XR Plugin Management system and the Shader rendering method, where the image in one eye wouldn't render. I was waiting for Vive to finally be properly supported with the new XR Plugin system so I could properly test and reproduce it myself. But in the end, I didn't need it. The issue was something I should have probably have had indicated to me a long time ago. Was just a issue with the Unlit Shader and the SinglePassInstanced rendering method. That method was not one I had access to before with my devices.

I also addressed issues with the RenderingMode selection stuff. The option itself didn't work as a global static variable like I thought, and once I realized what was going on, it helped explain some known issues. And well, there was some compilation issues with more modern versions of Unity.

I took a lot of time off from these projects because purchases significantly slowed down after the pandemic started, and it seemed like a waste of time to put more work into stuff that's going to sell less. But now that things are picking back up again, hopefully soon I'll work on the rest.

I'm not sure what there is that's left to do with this asset besides maintaining it. So I'll have to just rely on users making suggestions or reporting issues. Otherwise, don't expect to see much going on with this. It wont be dead or anything, just not in need of any update... unless Unity breaks stuff again...

Change Log:

2.5:
  • Removed code for automatically detecting your StereoRenderingMode and selecting an appropriate RenderMethod.
  • Moved the RenderMethod option from the VR3DMediaViewer component to a new VRSettings object. In doing so, this fixes issues with selection. 
  • Resolved a SingePassInstanced issue with the image not displaying in the right eye with the Unlit shader.

Available now on the Unity Asset Store!

Friday, January 17, 2020

Update: VR3DMediaViewer v2.4



VR3DMediaViewer has been updated to v2.4!

While waiting for publishing approval for TwIRC I decided to check in on VR3DMediaViewer to see if there was anything on my list that was worth looking into. SinglePass rendering support was the best task, so I gave it a shot.

SinglePass rendering requires use of shaders. As is, my asset is not designed around that, so I figured it was to contrasting of a option to support and integrate into my asset as is. After messing with it a little though I realized that I could fit it in as an option well enough. So, as much as I hate shaders, I wrote up what I could and got single pass rendering working. Setup is about 2/3 the same as the other method. You just don't need to setup a camera now for the SinglePass method.

The old, Layered, method is still an option. Selecting between the 2 options is available via a global option on any canvas. I would have just programmatically selected Layered if you had MultiPass selected, and Shader if you had SinglePass selected. But MultiPass mode supports both options, so I wanted to allow users a choice.

A common default question will probably be "which option do I choose for my project?". IDK. All I can say is, I think the SinglePass/Shader method will be more efficient considering performance. But I don't believe it will be significant in most cases. I think for it to be noticeable, you would have to have MANY instances of VR3D canvases in your scene. Like a gallery. Since the SinglePass option is so new and for me, experimental, I can't clearly declare it as the better default option though. The Layered method just works. It's been the only/primary method since the old RenderSwap method was dropped. About the only other difference is that Layered supports use of any shader, while the Shader method naturally requires the use of my assets Unlit shaders. So SinglePass+Shader for minor performance, and MultiPass+Layered for stability and customizablity?

Moving on, the next most interesting inclusion in this version is (limited) support for taking Panoramic Screenshots. The limits are that Unity v2018.1 and up is required, and the method/APIs used to achieve it are flawed as I've noticed quirks with the output when looking up/down. I just followed Unity own guidelines and use of APIs that they created specifically for this, and as such the issues with this method are out of my hands. I'd still recommend eVRydays free asset for capturing Pano media instead. In theory his is largely the same technique, just his Cubemap to Equirect code seems to be better than Unitys.

Finally, worth mentioning is a new addition/change to all my assets that I'll be trying out.

I've been trying to find ways are improving my sales. And when you come right down to it, one thing that helps the most is people leaving reviews. But very VERY few people do, and it really hurts new assets. People are reluctant to try and buy an asset because it has no/few reviews, and it has none/few because of the few that do by it don't leave a review. The only working method I have found to help get reviews was to ask people when they contacted me about issues. But ideally, my assets would be so good that people wouldn't be contacting me with issues. So then what? I don't want to purposely make flawed assets. So what can I do?

I came up with the idea to remind people with my asset itself somehow. But I needed to find a way to do it that seemed like a fair reasonable balance of actually reminding people, but not completely annoying.

My idea was to create an on load pop-up you see for many assets, but mine only shows up every 3 days. You can easily click it away and not see it for another 3 days, or you have a couple options to never see it again. The main way to never see it again is to simply wait 3 minutes for a countdown to complete, and a checkbox in the window to permanently hide the popup will become accessible. The idea is, if you want to wait, you can go and leave that feedback while you do. Seems reasonable to me! If you want to not be reminded, don't want to wait, don't care about helping support asset devs with a simple review, than you could also just edit or delete the script. It would then of course be gone until the next time to update or re-import the asset. I obviously don't like that option, but its peoples right to chose that.

This reminder is a trial I guess. My hope is of course that it gets more glowing 5 star reviews! But it could always backfire and cause customers to over exaggerate and leave a bad review solely based on perceiving a minor inconvenience as annoying and completely negating all the positive they get from the asset. IDK. Time will tell. I'll hopefully be adding this to my other assets too.

Change Log:

2.4:
  • Added SinglePass Stereo rendering support.
  • Optimized demo files.
  • Added review reminder popup. (Removed for now.)
  • Fixed misc minor camera setup bugs.
  • Fixed an issue with the Mono_TwoImages format not working as intended.
  • Fixed some script/shader errors.
  • Addressed issue with shaders not being included in builds.
  • Added Panoramic support to the Stereoscopic3DScreenshot script. Requires Unity 2018.1+. Its imperfect though, but out of my hands.

Available now on the Unity Asset Store!

Wednesday, December 11, 2019

Update: BodyLanguageVR 1.1



This first update of this asset mainly sees me finish the Detect Inverse option. This basically give a user more freedom to trigger some inputs in a more natural feeling way. For example, the head shake no motion previously required a Right->Left->Right->Left, but a users natural instinct may be to go Left->Right->Left->Right. Now both can work.

Besides some minor bug fixes and adding a manual, most of this update is done as preparation for the future direction of the asset. I wanted to get more done in for the next update, but felt it better to release what I have early so I can take my time and do things properly.

I've been reflecting on the direction I want to take this asset, and to begin with that I had to break down and define its current goals. I want this asset to allow replacing traditional input with VR motions. Traditional input is stuff like digital button presses and analog stick/button presses. As is, my asset does not imitate such input very well. Even a simple digital button press. When you press  button down, sure its simple a TRUE/FALSE thing and my asset does that. But what it also allows which my asset did not is an amount of time that button was held down. When you do a motion its very event based. Preforming a motion triggers a TRUE value for a single frame. That's it. That's only good for yes/no types of scenarios.

This update attempts to allow you to return values for more than a single frame, but its kind of limited. And not well thought out. I have no stock demonstration input ideas for the additions.

This brings me to the future direction of the asset.

Right now, the asset is designed around what I refer to as a "DoThen" setup. What that means is, the users Does a motion, Then a value is returned. This is as opposed to what I'd like to additionally support with what I currently refer to as "WhileDo". That would be, return a value While the user Does a motion/sequence. This would better simulate holding a button/stick for a period of time. While you can currently just make a 1 motion sequence, I'd also like to better support singular motions.

In the future I can see this asset supporting input like Fruit Ninja, oddball movement setups, etc. I may even just be able to finally make the game idea I had that originally sparked creation of this asset! =)

Changelog:

v1.1
  • Added DetectInverse option. This allows the user to do the mirror image of a sequence to trigger it.
  • Added GetMotionAxis() to MotionDetection. It's still crude atm, but this allows you to get an analog value back from the input. Right now the value is just a float from 0 to 1.0f, and based off speed of which the user completes the sequence.
  • Along with that, there's a new option called ResultDurationType. This allows you to get the non-zero result of GetMotionTriggered() and GetMotionAxis() for longer than just a single frame.
  • Fixed some issues with changing the size of the Input and MotionSequence lists.
  • Removed the GetMotionTriggered() method in the BodyLanguageVR class in favor of calling it directly form MotionDetection.
  • Tweaked the expected usage to use a more common instance/object oriented approach instead of the string based lookup method.
  • Added an optional OnMotionTriggered() method selector to the UI. I don't recommend its usage for most users. Its just for new users who aren't great with code, to help grasp the idea of the asset quickly. Proper/recommended usage is getting a instance of the InputMethod, checking myInputMethod.motion.GetMotionTriggered() every frame and calling your own code when true. GetMotionAxis() is not supported with OnMotionTriggered().
  • Split the InputExample script, along with the Demo scene, into 2 to reflect the differences with setup for the above.
  • Created new Manual.pdf instead of a ReadMe.
  • Updated demo scene objects.

Monday, June 17, 2019

Update: TransformEx 1.2



TransformEx has been updated to v1.2!

This update was a long time coming, and was very needed. It's mostly about improving the demo scenes to both be more appealing/eye catching, and to better convey the usage, purpose, and quality of the asset through screenshots, video and a online demo.

The promotional material in general was really bad and/or lacking. The demo scene/screenshots looked cruddy and amateurish. There was no video, which seems to hurt peoples interest and willingness to give it a chance. There was no web demo. But that's all changed now!

This is all something that has bothered me for quite awhile, but the sales for this asset are slow despite it being a "must have" that all VR devs should be using. I never updated it until now simply because it didn't sell well and thus wasn't worth the time/effort. But it didn't sell well perhaps because it needed such an update? Unsure, I felt my time was better spent on VR3DMediaViewer updates/maintenance as that sells much better.

Additionally, I made some improvements to the Asset's code itself. Like menu options to allow you to hide units of measurement that you probably don't use, and end up just making things more cluttered (like Miles and Kilometers). I polished up the UI a little to be formatted better. I added a "equalize" button, something I wanted to add long ago in some form, but I wasn't sure how I wanted to go about it. And there's even now minor support for RectTransforms, at least with positions.


Change Log:

1.2:
  • New demo scenes.
  • Added menu options to only see the units of measurement that you want.
  • Improved the look of the Ex Transform controls.
  • Ex Position controls added to RectTransforms.
  • Added equalize button for easy equalization of the object proportions.

Available now on the Unity Asset Store!

Monday, June 10, 2019

Update: VR3DMediaViewer 2.3



VR3DMediaViewer has been updated to v2.3!

I'm not sure what happened to 2.2... I guess I decided not to post about it since it was more minor? I'll include the change logs for both though.

The most notable updates are:

A new Manual. This manual is a PDF that replaces the old ReadMe text file. It's largely copied directly from the readme, but heavily updated with better formatting, images, color, etc. It should be a lot more new user friendly.

The Stereoscopic 3D screenshot script/scene was bugging me for awhile. I realized it was geared around developers using it themselves in editor. But it should allow users of the devs app to use it too. So I worked on some example scripts/assets/scene to provide a decent example of how best for devs to allow users to make use of it.

There's a new Panoramic media display method available now. The older way had issues in that as physical projection it didn't lock to the viewers head position, which may not away be desired. Being mesh based, its also is subject to the meshes geometry. You can see odd angles in the media caused by the vertices/uv lines of the mesh, only mitigated by using a higher poly mesh.

The new method is shader based. Its more like a skybox, viewed at infinity. So it's always centered on the viewers camera. And the curve is rendered in the shader, so it both renders a smooth curve without the odd angle issues, but views the same regardless of what shape mesh you use! This shader method is setup for both 360 and 180, supports rotation of the image around the viewer, and even can work with a traditional flat quad canvas. The old panoramic method is still available as an option.

Convergence has also been updated. It supports both the old and new panoramic display methods. Its now split into 2 convergence modes. Cropped (the previous way) and Tiled. Tiled just lets the texture wrap around as its shifted in the canvas. It's not ideal for non-panoramic content.

I improved the look/organization of the Stereoscopic3DImage objects. The controls are now better sectioned out, color is used to make the sections pop more, more controls are disabled/hidden when not relevant, etc. I also added a preview for the media to the object. It's similar to the preview you see when selecting a image/video itself, but in the case of images it will display the image converted to a SBS/TB format. The videoClip preview is limited. Just a low res image texture of the first frame.

I added several new demo scenes, and with that organized all the demos scenes into sub-folders.

Change Log:

2.2:
  • Converted the ReadMe to a Manual.
  • Fixed some position/rotation issues with the Stereoscopic3DScreenshot script.
  • Added new demo content/scene to show how to use the Stereoscopic3DScreenshot script to allow players to make use of it at runtime/gametime.

Change Log:

2.3:
  • Added new Panoramic shader based canvas formats.
  • Added wrapModeOverride option to Stereoscopic3dImage objects. This is mostly for video clip textures that don't expose the WrapMode property in the Import Settings.
  • Added ConvergenceMode option.
  • Fixed a rotation bug with the Example3DScreenshotController..
  • Reorganized the Demo Scenes folder hierarchy..
  • Tuned up the Stereoscopic3DImage object inspector.
  • Tweaked the AnaglyphToSBSTexture() method to support more than just Red/Cyan now..
  • The camera setup notification box will now not display on the example cross-eyed camra rigs..
  • Added scenes/canvas meshes for 180 Panoramic display.

Available now on the Unity Asset Store!

Thursday, April 4, 2019

Update: Project: Empty Soda Can #1



Isn't that funny? In my last update I made a complete guess at when my next update for this project would come out. 6 Months. And wow... and here we are, 6 Months later! Exactly!

What's that? I made another update in that time, and this one is 6 months after that instead? Weird...

Well anyway, in that time Project: Empty Soda Can has come a long way!


Recent Example #1:

After 6+ months of painstaking research and feedback, we have found that the Red Cube doesn't track well. Apparently, to some Bulls out there, the color is found to be offensive.

*Looks down in shame, as he hears the chorus of Boos.

I know. I understand the outrage. This is unforgivable, but I hope that you please do forgive me.

To rectify this, we've instead elected to go for a calm, cooler, more neutral Blue.



I'd like to take this time to formally apologize to any Bovines out there. It was never my intent to offend. I truly hope that you can forgive me.


Recent Example #2:

Again, upon further research, we have discovered that the term "Internet" is too confusing to a significant portion of the audience.

Some of such people were often offended by it as it presumed that everyone was educated enough to understand the word.

*Smacks self in face.

I don't know whats wrong. Why we keep making such horrendous mistakes.

*Smacks self in face again.

We briefly considered "World Wide Web", but we quickly deemed that to be to much of a mouthful.

Further, feedback suggested that it wasn't inclusive enough.

So... we think we came up with a solution...

*Holds breath...



Our hope is that "Everybody!" remains inclusive, while retaining an appropriate lack of confusion.


Recent Example #3:

Finally, due to overwhelming feedback, we have realized another mistake...

We have offended yet another portion of the audience...

*Smacks head against wall several times.

While the "Move Right" Animation was an amazing achievement, we made a grievous mistake in not considering the feelings of our Left Handed Audience.

To help be more inclusive to our Left Handed audience out there, we have now added an Animation for you too!

And yes, this too has been updated to now be a BLUE CUBE.



We're extremely sorry that we dropped the ball on this one as bad as we did, and hope that addressing it now is better late then never!

Stay tuned for the next update!

Lets see...

I'll try guessing again...

One plus Two is Three...

...carry the Four...

...one train is going 40 MPH, and the other is going 60 MPH...

...I'll guess... 6 Months!

Yea. Solid guess!


Thursday, October 4, 2018

Update: VR3DMediaViewer 2.1



VR3DMediaViewer has been updated to v2.1!

The first update for this asset in over a year! There's just not a lot left to do with this project, besides maintenance. And that's "mostly" what has been done now. General bug fixes.

However, there are a couple notable improvements. Mainly in the new support for the UI.RawImage component, so you can now use the UI for a 3D canvas instead of just a MeshRenderer.

Another being the addition of a simpler version of the 3D camera setup procedure. Far to many people had issues understanding "right click the Camera component" to open a menu, as a step. Now there's a simple to locate button on the Camera component that should catch anyones eye. This is something I've been trying to find a way to address for a while, and I'm so happy that I finally found a way to do so that I'm satisfied with.

I have not yet updated the video or ReadMe for this new procedure however. I'll have to record new footage, and I've been considering a documentation overhaul to something like a pdf.

As for the new high poly canvas. Well, I made the low poly one as something quick and simple, intending it just to be used for my demo scene. Not the consumer projects. But I now figure that most devs would probably just use whatever 360 canvas that comes with the asset, rather then make one that suits their needs. So I figure why not make this one high quality and project worthy itself. The old one has far less of a poly count, as the new one is about 16,000 polys, but I figure a 360 Panorama scene like can afford it as it shouldn't have much other content, and the old 360 canvas is still included.

Change Log:

2.1:
  • Added support for using the UI.RawImage component as a canvas to display 3D media.
  • Added a new high poly count 360 canvas. It's now used in the demo scene. The old low poly version is still available though.
  • Simpler camera setup procedure.
  • Misc bug fixes.

Available now on the Unity Asset Store!

Tuesday, July 17, 2018

Update: General "Progress" Update



Unity has recently updated their Publisher Polices. And in particular, one policy effects the content of the websites for the publishers. No, not a policy about the publishers website hosting objectionable content. Instead, they are more concerned with the REAL problems. Things like how often the publisher updates articles on their personal website.

They should really be commended for trying to rid the internet of the scourge that's to busy working on their projects to update, or the people who don't update often due to the return on time investment for their projects not warranting going the extra mile to let the 0.001% of people who click through the links to check the publishers site, what they have been up to.

I'm sad to say... I too am one of these heinous people. But no more! Today I vow to post an update every 6 months with something new...

wait... whats that?

I have to post 3 examples of recent work every 6 months?

Even better!

Prepare to be in awe of this amazing content! I call this project... umm... lets see...

Yuberstantion... no... Chazwelder... no... Cronblaztic... no...Harrrrplooge... no... Nibblestitz? Frezlogger?

Hmm. Maybe I'll think of a title later. For now, I'll just give it a code name. Like... hmm... what do people useually do for codenames? Simple food names? Maybe something based off historical figures, events, myths, etc? Like Kit-Kat, Morpheus, etc.

How about...

*Looks around the room.

Empty Soda Can?

Yea! Project: Empty Soda Can!

I'll talk about the goals of this project later. For now, enjoy this recent work of mine on the project!


Recent Example #1:

We all know what a default white cube looks like in Unity, right?



But did you know that you can change it to a different color? OMG! Right? That's insane!

*Pauses to wait for reader to catch their breath.

Are you good now? Ok. I'll proceed.

Well, after hours. No, days. No, weeks of work... I finally bring to you...

The "Red Cube"!



Yes, that's right. Red!

With this new red cube, everything changes!

*Mind blown.


Recent Example #2:

Example #1 is art. But I'm a programmer. It's time to showcase my REAL skills here.

Have you ever heard of "Hello World!"?

Well here's what it looks like in Unity.



Now, brace yourself. I'm about to go all "Next level" on you.



*Drops mic. 

*Walks away.

*Thinks for a second.

*Walks back. 

*Picks up mic.

I almost forgot. "How is this scripting you may ask?"

Well, I'm glad you asked.

Normally I wouldn't do this, but I'm going to post a snippet of how I achieved this miracle of coding.



There's a couple more steps. But I'll keep those secret.

*Looks around for the mic so he can drop it again, but can't find it.


Recent Example #3:

We had Art, Then Scripting. What else could be left?

Animation!

Lets return to our Cube.... sorry, I mean our RED CUBE from Example #1.

"No! Don't do anything to the cube! It's so pretty already! You can't possibly improve upon it any more!" some may say?

Well, here... we don't play it safe.

Simply "Amazing" is not good enough. We have to stack "Amazing" on top of "Amazing". Get ready for an Amazing sandwich. No, not a typical sandwich, just made really well! Follow along here! I mean, a slice of "Amazing" between 2 other slices of "Amazing".

I bring you...

A Red Cube that... moves right.



Yea. I know.

I think we all need to lie down for a bit. This was overload...

Check back later to see how this project progresses. When? I don't know? 6 months? Just a random number I pulled out of my head...

Thursday, May 4, 2017

Update: VR3DMediaViewer 2.0



VR3DMediaViewer has been updated to v2.0!

In addition to being renamed, it's had a major overhaul to be easier to use and be designed from the ground up with Video in mind.

I also finally checked off the last thing on my TODO list, and got Interlaced, Checkerboard and Anaglyph formats working with video!

To do this update justice, I went all out on this version, aiming to achieve a new level of professional polish. Both with the asset itself and the new promotional images. Enjoy!

Change Log:

2.0:
  • Complete rewrite. 
  • Full support for all formats when using animated textures like video. 
  • New "Stereoscopic 3D Image" asset system to better pre-configure media for display. 
  • Easier streamlined setup. 
  • Support for Unity 5.6 VideoPlayer. 
  • Improved Stereoscopic 3D Screenshot script. 
  • Reorganized file hierarchy. 
  • Replaced the old "Example Image" with 7 real Stereoscopic 3D images. 
  • Anaglyph support now includes all variants, not just Red/Cyan.

Available now on the Unity Asset Store!

Tuesday, October 4, 2016

Update: VR3DImageViewer 1.3



VR3DImageViewer has been updated to v1.3!

It now officially supports both *Stereoscopic 3D Video and Stereoscopic 360 Panoramic media!

Until now the asset "technically" supported both, but was not designed to be specifically intended for either. To help, 2 new demo scenes have been provided as examples on how to use both types of media with the asset.

Additionally, the asset has been update to work with the latest Unity (v5.4) and major VR SDKs.

*A special note about Video support. Due to the nature of the interlaced, checkerboard and analglyph formats, the asset does not support Video of those formats. This may be changed in the future.
Change Log:

1.3:
  • Updated setup steps in the readme for SteamVR and OVR SDKs to be compatible with Unity 5.4.
  • Replaced the Google Cardboard setup steps with GoogleVR/Daydream steps.
  • Fixed tooltips for good now!
  • Added a Demo example for showing how to use this asset for Stereoscopic 360 Panorama images, since they are popular with VR.
  • There are probably various ways of achieving this, and probably a few variations on formatting for 360 images. This just shows a common one.
  • Added a Demo showing how to use this asset for Stereoscopic 3D video playback. This demo is just an example using Unitys MovieTexture format. Other forms of media playback in Unity, like through asset store assets, may and probably will work too.
  • Added a check every frame to ensure that any changes made to the Material (sourceMaterial) used by the VR3DImageViewer script, are visible. This applies to selected texture, tiling and offset. This was done to address issues with this assets compatibility with several Video assets I tested it with.

Available now on the Unity Asset Store!

Tuesday, August 9, 2016

Update: TransformEx 1.1



TransformEx has been updated to v1.1!

This update mainly tunes up the asset with some tweaks to make it more aesthetically modest in the Editor UI, and more refined on how you access if from other scripts.
Change Log:

1.1:
  • The Mesh Size fields are now encased in a foldout like the position fields.
  • The RGB boundaries lines will now only show in the scene view when the new above mentioned fold out is expanded.
  • The open/close status of both fold outs will now be remembered and used between all transforms in the scene.
  • Condensed the SizeEx() and PositionEx() extension methods into a single new TransformEx() method.
  • Replaced the old GetAs****() and SetFrom****() functions with more proper Get/Set accessors. You now access them like variables.
    • I.E.:
      • positionIn****
      • sizeIn****

Available now on the Unity Asset Store!

Monday, June 27, 2016

Update: VR3DImageViewer 1.2



VR3DImageViewer has been updated to v1.2!

The major new changes are a new option to change at which depth the image focuses. This is particularly useful when dealing with images that are difficult to focus on, perhaps because the contents of the image around the sides appears to be in front of the image frame. It can also be used to help viewers better focus on a image when they're camera rig is nearer to it.

Various functions of this script have now been exposed to be accessed via your own scripts, to change setting at run time.

Several new Stereoscopic 3D formats have had now been added as supported, include 2 images, Vertical/Horizontal Interlaced, Checkerboard, and Anaglyph (Red/Cyan).

Check the change log for further details.
Change Log:

1.2:
  • Merged the 2 scripts into one. Now there's an option called "Render Method" in the inspector. RenderSwap is the original method meant for Single Cameras/NativeVR. Layered is the method for cases in which RenderSwap doesn't work.
  • Updated setup steps for SteamVR.
  • Fixed an issue with the Layered method that created infinite copies of the image object.
  • Fixed tooltips not displaying.
  • Fixed the bonus screenshot script to render a SBS image instead of cross-eyed.
  • Added a new feature to control a convergence offset to help make images focus at different depths. Explanation as follows:
    • To use the convergence, you need to set a max range. Doing so crops the visible area of the image pair, by 2 pixels per unit. One on each side of the displayed image.
    • The max range is meant to be set by the developer ahead of time, not at runtime. Though for the sake of changing images at runtime you can.
    • The convergence value shifts the images horizontally for each eye by units of pixels.
    • The convergence value can be set at all times. Though to see it have an effect it needs to be at runtime.
    • Setting the convergence to a negative value draws the the focus areas of the stereo image closer to the viewer. Naturally then, a positive value draws it further away.
    • You can use this feature to fix hard to focus stereo images that weren't made properly.
    • You can also use it to dynamically adjust a good image at runtime for different reasons that you may have. Like making a image easier to focus on as the camera rig gets nearer to the image.
    • Dimensions of the image are provided in the editor to help you adjust your mesh scaling as needed, as the cropping causes a loss of any pre-existing viewed aspect ratio. So generally you will want to scale your meshes GameObject in horizontally to compensate for any loss.
    • If you're using the included bonus script to acquire your stereo pictures, you can try bumping up the width of the screenshot before you capture it, to compensate for the pixels you will lose due to cropping. Just remember that you lose twice the pixels of the maxConvergence value.
  • Newly added instances of the script will now try to use RenderMethod settings from pre-existing instances of the script in a scene, as defaults.
  • Added support and public methods for changing textures and image properties at runtime. The following is a full list of methods and variables meant to be accessed via code:
    • Pubic Methods:
      • SetTexture(texture1, texture2, ImageFormat); Texture2 is only needed if using Two Images. ImageFormat is optional but recommended in most cases.
      • Set3DImageFormat(ImageFormat); Pass the new image format as "ImageFormat.SideBySide" for example.
    • Public Variables:
      • swapLeftRight = bool; True = Swap the Left and Right images. False = Don't.
      • stereo = bool; True = Show the displayed image in Stereoscopic 3D. False = Show the same image to each eye. (Left is used for both, unless swapLeftRight is true, then right is used for both)
      • convergence = int; A pos/neg value to offset the textures each eye sees by 2 pixels per unit.
      • maxConvergence = int; A maximum value for the above. The max for this is 1/4 the pixel width of each eyes texture.
  • Added support for 2 source images, one for each eye, to be used.
  • Added support for several new image format types. These formats are less common, and not recommended that you ever create stereo 3D images in these formats. But since such format images exist, this asset might as well support them.
    • Due to the way these formats are, they require a behind the scenes conversion. And because of that they will not work with animated Textures like video. Animated textures should be created in a formats like SBS, TB, and Two Images.
    • These new formats are:
      • Horizontal Interlaced
      • Vertical Interlaced
      • Checkerboard
      • Anaglyph (Red/Cyan only for now)
    • Anaglyph support is done in a way similar to using colored glasses in real life, except the world around the picture remains un-tinted. Due to each eye seeing a significantly different color, some people may experience discomfort after extended use just like with the colored glasses.

Available now on the Unity Asset Store!

Tuesday, May 17, 2016

Update: VR3DImageViewer 1.1



VR3DImageViewer has been updated to v1.1!

Added an optional script for Rendering 3D images.

Added a new demo scene with a fake VR camera rig that helps clearly show that each eyes camera sees a different image, on a 2D monitor.
Change Log:

1.1:
  • Removed scripts/code to check for native Unity VR support. They were only used to assume that native VR was the only case in which a device/SDK would be using a single camera.
  • Now when using a single camera, like with native Unity VR, you have to select the camera as either left or right. If none is selected, it will attempt to search for MainCamera and use that if found.
  • Added a second demo scene with a fake example stereoscopic VR camera and a texture to clearly show that a different image is going to each eye.
  • Fixed the ToggleMonoStereo() method. Not sure what I was thinking back when I made it, by having it display the default double imaged texture when set to Mono, but now it displays the left eye texture to both eyes when set to Mono.
  • Added in a optional alternative script for viewing 3D images. It uses a method involving layers that I made and discarded last year, thinking it was now obsolete. Pre-Unity v5.4 SteamVR support proved otherwise. So in an effort to make this asset cover as many devices and SDKs as possible, I added it in too. Basically it relies on using Layers for each eyes camera to only not render objects of the other eye. I added another demo scene as an example of how to use it. Refer to the "Pre-Unity 5.4 SteamVR" section for how to use it.
  • Cleaned up some code and comments.
  • Reorganized the folder structure.

Available now on the Unity Asset Store!

My Services

Unity C# Scripting

I'm available for C# scripting for small Unity projects.

Read More

Basic 3D Modeling

I'm experienced with Blender. Basic modeling and rigging.

Read More

Unity Development

I've created many demos, scenes, and even a simple game.

Read More

Virtual Reality Consultation

I've been an VR enthusiast for a few years, and made VR content.

Read More

News / Dev Blog

Contact

Contact me

You can reach me by email or twitter.

Email: darkakumaz-net.us

Twitter: @DarkAkuma_

LinkedIn: Profile