0
Kinect Panorama Demo
This discussion was imported from CodePlex
rakelmasuta wrote at 2014-03-13 00:35:
Hi..I already download the latest Helix3dToolkit and source code. I found the example of kinect integration. And in example i found panorama demo.
But, i can't found the source of integration between kinect and panorama demo.
Can you help me, please.
But, i can't found the source of integration between kinect and panorama demo.
Can you help me, please.
objo wrote at 2014-04-29 10:56:
Sorry, there is no panorama demo for Kinect.
rakelmasuta wrote at 2014-05-19 18:02:
I test to separate it for panorama demo only and add some feature like button instead.
here's the code :
~ mainwindow.xaml
here's the code :
~ mainwindow.xaml
<Window x:Class="PanoramaDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ht="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf" Title="TA Rakel"
xmlns:k="http://schemas.microsoft.com/kinect/2013"
Height="480" Width="640">
<Grid>
<ht:HelixViewport3D x:Name="view1" ShowViewCube="False" ShowCameraTarget="False" CameraMode="FixedPosition" RotationSensitivity="0.6">
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White"/>
</ModelVisual3D.Content>
</ModelVisual3D>
<ht:PanoramaCube3D Source="Models\Opera\"/>
</ht:HelixViewport3D>
<k:KinectSensorChooserUI HorizontalAlignment="Center" VerticalAlignment="Top" Name="sensorChooserUi" />
<k:KinectUserViewer VerticalAlignment="Top" HorizontalAlignment="Center" k:KinectRegion.KinectRegion="{Binding ElementName=kinectRegion}" Height="100" UserColoringMode="Manual" />
<k:KinectRegion Name="kinectRegion">
<Grid>
<k:KinectTileButton Label="Press me!" Click="ButtonOnClick" VerticalAlignment="Top" Margin="28,0,0,0" HorizontalAlignment="Left"></k:KinectTileButton>
<k:KinectCircleButton Label="Circle" HorizontalAlignment="Right" Height="200" VerticalAlignment="Top" Click="ButtonOnClick" >Hi</k:KinectCircleButton>
<k:KinectScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" VerticalAlignment="Bottom">
<StackPanel Orientation="Horizontal" Name="scrollContent" />
</k:KinectScrollViewer>
</Grid>
</k:KinectRegion>
</Grid>
</Window>
~ mainwindow.xaml.cs// --------------------------------------------------------------------------------------------------------------------
// <copyright file="MainWindow.xaml.cs" company="Helix 3D Toolkit">
// http://helixtoolkit.codeplex.com, license: MIT
// </copyright>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Kinect;
using Microsoft.Kinect.Toolkit;
using Microsoft.Kinect.Toolkit.Controls;
using Microsoft.Kinect.Toolkit.Interaction;
namespace PanoramaDemo
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private KinectSensorChooser sensorChooser;
public MainWindow()
{
InitializeComponent();
Loaded += OnLoaded; /// kinect Loaded
var camera = view1.Camera as PerspectiveCamera;
camera.Position = new Point3D(0, 0, 0);
camera.LookDirection = new Vector3D(0, 1, 0);
camera.UpDirection = new Vector3D(0, 0, 1);
camera.FieldOfView = 120;
}
/// <summary>
/// Deteksi Status kinect
/// </summary>
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
this.sensorChooser = new KinectSensorChooser();
this.sensorChooser.KinectChanged += SensorChooserOnKinectChanged;
this.sensorChooserUi.KinectSensorChooser = this.sensorChooser;
this.sensorChooser.Start();
}
private void SensorChooserOnKinectChanged(object sender, KinectChangedEventArgs args)
{
bool error = false;
if (args.OldSensor != null)
{
try
{
args.OldSensor.DepthStream.Range = DepthRange.Default;
args.OldSensor.SkeletonStream.EnableTrackingInNearRange = false;
args.OldSensor.DepthStream.Disable();
args.OldSensor.SkeletonStream.Disable();
}
catch (InvalidOperationException)
{
// KinectSensor might enter an invalid state while enabling/disabling streams or stream features.
// E.g.: sensor might be abruptly unplugged.
error = true;
}
}
if (args.NewSensor != null)
{
try
{
args.NewSensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);
args.NewSensor.SkeletonStream.Enable();
}
catch (InvalidOperationException)
{
error = true;
// KinectSensor might enter an invalid state while enabling/disabling streams or stream features.
// E.g.: sensor might be abruptly unplugged.
}
}
if (!error)
kinectRegion.KinectSensor = args.NewSensor;
}
/// <summary>
/// Untuk event on click button
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ButtonOnClick(object sender, RoutedEventArgs e)
{
MessageBox.Show("Well done!");
}
}
}
How to control rotation of panorama image and make zoom for it by kinect region?objo wrote at 2014-05-19 21:45:
this is interesting. I don't know much about the Kinect API, what gestures are you using to control the view?
Please fork and create a pull request to get your code merged into the Kinect examples.
Please fork and create a pull request to get your code merged into the Kinect examples.
rakelmasuta wrote at 2014-05-20 00:47:
i am thinking about camera manipulation. do you know how to do that?
Customer support service by UserEcho