Tuesday, October 30

World Famous Starship Captain

I decided to create an animation of Snoopy as Captain Kirk combined with the sound of warp drive acceleration. I used this picture as a base.
Image result for world famous starship captain

I removed Woodstock from it and darkened the background.

The next step was to cut Snoopy and the doghouse out of the background and fill in the background.
 




Next, I used MS Paint to skew Snoopy to about 20 degrees. The sound file was 30 seconds long, and at 24 frames per second made for 720 total frames. Dividing that out came to about a degree every 20 frames.























Each of these were combined with the background. Then I used a Java program to fill in the gaps.

/**
 * @author Tim Madden
 *
 */

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

public class CopyFile {

public static void main(String[] args) {
int[] skew = {0, 1, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608,
640, 672, 704, 720, 721 };
// String src = "D:/Shared/My Pictures/1 Blender Models/Snoopy/Sequence";
File source;
File dest;
String destString, sourceString;

try {
for (int x = 1; x < skew.length; x++) {
sourceString = String.format("D:/Shared/My Pictures/1 Blender Models/Snoopy/Sequence/%04d.png", skew[x]);
System.out.println(sourceString);
source = new File(sourceString);
for (int i = skew[x]; i < skew[x + 1]; i++) {
destString = String.format("D:/Shared/My Pictures/1 Blender Models/Snoopy/Output/%04d.png", i);
System.out.println("\t" + destString);
dest = new File(destString);
Files.copy(source.toPath(), dest.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/*
* try { for (int i = 1; i < 281; i++) { destString =
* String.format("/Users/tjmad/OneDrive/Pictures/Cloak/Image Sequence/%04d.png",
* i); dest = new File(destString); Files.copy(source.toPath(), dest.toPath(),
* StandardCopyOption.REPLACE_EXISTING); } } catch (IOException e) { // TODO
* Auto-generated catch block e.printStackTrace(); }
*/
}

}

I then thought it would be good to have a title card. 
Blender was used to put the sequences together with the sound file.

And the end result:


Sunday, June 17

UWP Support for .NET Standard 2.0, fixing the NU120 message

To fix the NU1201 for Universal Windows Program such as:
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586). Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-arm. Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-arm-aot. Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x64. Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x64-aot. Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x86. Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1201: Project WeatherApp is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x86-aot. Project WeatherApp supports: netstandard2.0 (.NETStandard,Version=v2.0)


You need to set the Minimum Version in the Project properties to Windows 10 Fall Creator Update (10.0; Build 16299).


Thursday, February 1

Procedural star field in Blender

In the right-hand panel, turn off Reflective Caustics and Refractive Caustics under Scene.



Go to the World setting in the right-hand panel

Move mouse cursor to bottom of menu on the window at the line, until it changes to a double ended arrow.

Slide the window up to make it larger.

Change the bottom view to the node editor.

Switch to World at the bottom.

Click on the Use Nodes in the right-hand panel.

Add a Noise Texture

Set the Scale of the Noise Texture to 500 or so.


Add a ColorRamp

Add a MixRGB node.

Set the top color of the MixRGB node to black


Connect the Color output of the Noise Texture to the Color2 input of the MixRGB node.

Connect the Color output of the Noise Texture to the Fac input of the ColorRamp.

Connect the Color output of the ColorRamp to the Fac of the MixRGB node.

Connect the Color output of the MixRGB node to the Color input of the Background node.

Change the upper window to Rendered

Adjust the sliders on the ColorRamp to get the look you want.

The further to the right the black slider is, the more black the background. The further to the left the white 
slider is the more stars.

And use the Detail in to Noise Texture to control the number of stars.

To add different size stars, hold Shift and select the Noise Texture and the ColorRamp, then press Shift-D to Duplicate.

Change the scale of the second Noise Texture to a lower value.

Add another MixRGB node between the first one and the first ColorRamp node.


Connect the Color output of the top ColorRamp to the top Color input of the new MixRGB node. Connect the Color output of the bottom ColorRamp to the bottom Color input of the new MixRGB node.


Change the new MixRGB to Add.


Monday, September 25

unhandled exception of type 'system.typeinitializationexception' in WPF

I was playing around with a Windows Presentation Foundation app and wanted to add Spring.NET to it. I added in the with the references to Spring.Core and Spring.AOP after using NuGet to add them to the project. 
 
   
     

     

   
 

Running the application, it immediately threw a 'System.TypeInitializationException'.

I tried to remove the section name, then the section Group, but the same exception occurred. I gave in and did a search on the exception and StackOverflow had the answer. The startup must be the last section of the App.config file:
 
   
 




Thursday, September 7

Spring.NET config error

Leaving out this section in App.config:

 
   
     

     

   
 

Gives you this error stack:


System.TypeInitializationException: The type initializer for 'Spring.Context.Support.ContextRegistry' threw an exception. ---> Common.Logging.ConfigurationException: Failed obtaining configuration for Common.Logging from configuration section 'common/logging'. ---> System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section spring. (c:\users\tjmadden\documents\visual studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.vshost.exe.Config line 3)
   at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
   at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
   at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
   at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
   --- End of inner exception stack trace ---
   at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
   at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
   at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at Common.Logging.Configuration.DefaultConfigurationReader.GetSection(String sectionName) in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\Configuration\DefaultConfigurationReader.cs:line 64
   at Common.Logging.LogManager.<>c__DisplayClass6.b__3() in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\LogManager.cs:line 472
   at Common.Logging.Configuration.ArgUtils.<>c__DisplayClass5.b__4() in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\Configuration\ArgUtils.cs:line 292
   at Common.Logging.Configuration.ArgUtils.Guard[T](Function`1 function, String messageFormat, Object[] args) in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\Configuration\ArgUtils.cs:line 318
   --- End of inner exception stack trace ---
   at Common.Logging.Configuration.ArgUtils.Guard[T](Function`1 function, String messageFormat, Object[] args) in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\Configuration\ArgUtils.cs:line 330
   at Common.Logging.Configuration.ArgUtils.Guard(Action action, String messageFormat, Object[] args) in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\Configuration\ArgUtils.cs:line 290
   at Common.Logging.LogManager.BuildLoggerFactoryAdapter() in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\LogManager.cs:line 470
   at Common.Logging.LogManager.get_Adapter() in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\LogManager.cs:line 203
   at Common.Logging.LogManager.GetLogger(Type type) in c:\_oss\common-logging\src\Common.Logging.Portable\Logging\LogManager.cs:line 422
   at Spring.Context.Support.ContextRegistry..cctor() in c:\_prj\spring-net\src\Spring\Spring.Core\Context\Support\ContextRegistry.cs:line 58
   --- End of inner exception stack trace ---
   at Spring.Context.Support.ContextRegistry.GetContext()
   at ConsoleApplication1.Program.Main(String[] args) in c:\users\tjmadden\documents\visual studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs:line 19