In this exciting project I created an augmented reality (A/R) application with a clothing based Image Target using the Unity 3D engine and A/R camera recognition.
DeeDub’s workspace in the Unity 3D engine
This application will let you view through your camera and see your surroundings enhanced with augmented reality. When the camera recognizes a certain image that has been programmed in, it’s able to place a 3D animated character on surface of the image.
Image Target with AR recognition
I programmed the camera to recognize a “Live Happy” logo that is on my wife’s apron. When the camera recognizes the logo it projects a 3D animated action figure walking around the logo. Once the image is tracked and the AR recognition has locked in place, you can move the device around and watch the AR camera match your movements.
Feel free to check out the APK (you’ll need to sideload it via developer mode on an Android device). One you load up the APK and install it on your device, open the app and point the camera at this logo:
One of the constant issues when working with legacy data is how ugly it is. When you’re calling a stored procedure to pull out legacy data from an Oracle Storage Management System backend, the resulting text string is formatted in a way that… Well, let’s just say its hideous looking, or at least we can say that it’s not human readable. Fortunately I’ve come up with a large library of conversion methods to take this data and format it into a way that will look good in the application front end UI. For example here’s a here’s a sample from my library that can take a MySQL timestamp and format it to look nice on a web page or application front end. To save critical UI space and help differentiate old records from new ones, the display shows a different format for how old the record is. For example records from today will simply say what time they were entered. Records from this week will have the day of the week and records older than that will have the dates. I use techniques like these frequently while handling the data conversion from where it’s stored in a legacy back in to being displayed on the modern front end user interfaces.
//********************************************************************************
function formatDateFromDb($timestamp){
$time_object = new DateTime($timestamp, new DateTimeZone('UTC'));
$time_object->setTimezone(new DateTimeZone('America/Los_Angeles'));
/*echo("<p>records from last year {$time_object->format('m/d/y g:i A')} </p>");
echo("<p>records from last week {$time_object->format('D F j g:i A')} </p>");
echo("<p>records from current week (but not from today) {$time_object->format('D g:i A')} </p>");
echo("<p>records from current day {$time_object->format('g:i A')} </p>");*/
$current_year = date('Y');
$timestampyear = date('Y', strtotime($timestamp));
$current_week = date('W');
$timestampweek = date('W', strtotime($timestamp));
$current_day = date('N');
$timestampday = date('N', strtotime($timestamp));
$current_hour = date('H');
$timestamphour = date('H', strtotime($timestamp));
$prettyDate = "";
if($current_year - $timestampyear > 0) {
//records from last year | 03/08/21 3:41 PM
$prettyDate = $time_object->format('m/d/y g:i A');
} else {
if($current_week - $timestampweek > 0){
//records from last week | Mon March 8 3:41 PM
$prettyDate = $time_object->format('D F j g:i A');
} else if(($current_week - $timestampweek == 0 && $current_day - $timestampday >0) || ($current_week - $timestampweek == 0 && $current_day - $timestampday == 0 && $timestamphour < 8)){
// records from current week (but not from today) | Mon 3:41 PM
$prettyDate = $time_object->format('D g:i A');
} else if($current_week - $timestampweek == 0 && $current_day - $timestampday == 0 && $timestamphour >= 8){
// records from current day | 3:41 PM
$prettyDate = $time_object->format('g:i A');
} else {
$prettyDate = "time format not found for {$timestamp}";
}
}
return $prettyDate;
}
//-----------------------------------------------------
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are many great uses for a full screen overlay. You can add splash screens, user interface elements and other features. Here is how to add a full screen overlay to your Unity Project.
To start with go ahead and create an Image GameObject.
In your hierarchy, right click and choose ui->Image.
This will add the Image Game Object as well as the Canvas as its parent. An EventSystem is also added.
To get a good view of the new Canvas Image element, make sure to enter 2D mode. Then you should select the Canvas GameObject in the Hierarchy, then place your cursor over the Scene and press F. Use zoom and scrolling to get your comfortable workspace settings.
Depending on your project you may want to take a look at the EventSystem GameObject. There are components attached to it which enable user interaction with any UI elements you might add to the project. If this does not apply to your project, you are free to delete the object from the hierarchy.
Looking at the inspector on the Canvas GameObject, the Canvas component has a RenderMode that should be set to the default of ScreenSpace – Overlay. This will stretch the image across the screen and ensure it is on top of any other content.
Screen Space - Overlay, where the Canvas fills the screen and all the UI elements of the canvas are rendered on top of everything else
There are two other components on the Canvas object: the Canvas Scaler and the Graphic Raycaster. The Canvas Scaler is a way of controlling the relative sizes of the UI elements when they are displayed on various screen sizes. The Graphic Raycaster is used to detect UI events. For example, when it detects a click, not only will it determine which UI element was clicked on, it will send the event to that element to be handled by the appropriate component.
We don’t need those two components for this project, so feel free to remove them from the Canvas GameObject.
Now we need to configure the Rect Transform component:
1. Make sure that the Image GameObject is selected in the Hierarchy window.
2. Find the Rect Transform component in the Inspector, then expand the Anchors setting.
3. Set the minimum values for x and y to 0. Set the maximum values for x and y to 1.
Now that the Anchor area of the Image is the whole screen, we no longer need an offset. Make sure to set the Left, Top, Right and Bottom properties to 0 on the Image’s Rect Transform
Your image now covers the entire screen and will stretch and move as needed depending on the screen size of the user’s device. I look forward to seeing what can be done with this, from start screens, end screens, custom user interfaces and more!
I have a wide variety of Metaverse scripting skills, as well as 3D sculpting, modeling and design. Please check out the samples.
I have certifications in 3D sculpting, modeling and animation using 3D Studio Max. I also have skills using Unity, Blender, True Space 3D, Maya, Poser and Bryce
For my final project in Adobe Illustrator class, I decided to show off my creative side, and design some clothes. I look forward to designing and releasing a line someday.
The IT team that is quietly powering the entire Skagit Valley College information infrastructure is a talented team of Technology Specialists. This diverse group of enthusiastic developers has helped redefine the way technology is used and have dramatically impacted the future of web development. We were laughing about how small the website looked in the screens of the new large monitors. I mentioned hearing about a flexible website layout that would allow to better use the screen space. My leaders asked me to put together some information about the subject.
I began with the initial research of web frameworks and responsive web technology, and then I presented my findings to the web team. From there we decided to go with a responsive web site rather than creating a separate mobile site. The technology that we have put in to place can now detect a user’s screen size, and then “respond” by changing the web page to best fit the user’s devices from PC to smart TV to iPhones and beyond.
The previous site was built at a fixed size for the monitors of the day.
Skagit Valley College website 2011
The new design looked great on desktop computers as well as mobile devices.
Skagit Valley College website 2014SVC website in responsive mode on mobile device
This is an awesome resource to create the various Icons for your project. From the browser “Favicon” to the home screens of windows, Android and Apple devices, this will create the perfect sizes and filetypes.
We create a helper class to use. This will return a variable that is set to the correct type. Credits to Steam Webhosting!
public static class AppSettingsHelper
{
public static T GetValue<T>(string key, T defaultValue)
{
var value = ConfigurationManager.AppSettings[key];
if (string.IsNullOrEmpty(value))
return defaultValue;
return (T)Convert.ChangeType(value, typeof(T));
}
}
We use the helper function to get the value and set the types of the variables.
// debug / test settings
static readonly bool testmode = AppSettingsHelper.GetValue<bool>("TestMode", false); // toggle test mode
static readonly bool disableupload = AppSettingsHelper.GetValue<bool>("DisableUpload", false); // disables the upload to server if true
// sftp settings
static readonly int port = AppSettingsHelper.GetValue<int>("SFTPPort", 22);
static readonly string host = AppSettingsHelper.GetValue<string>("SFTPHost", "feeds.dwdenney.com");