<?xml version="1.0" encoding="utf-8"?> <Trackable Type="Sectar Square Marker" Description="Marker with square detection element" Version="1.0" Company="Sectar"> <SquareMarker MarkerSize="500" FrameWidth="80" CellsCount="4" FrameMargin="15" CellMargin="5" CellsType="Circle"> <Code>111100010101</Code> </SquareMarker> </Trackable>
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Mogre; using Swarp.Examples.OgreSimpleSceneExample.Properties; using Swarp.SDK.Management; using Swarp.SDK.Ogre3DRendering; using Swarp.SDK.Rendering; using Swarp.SDK.Target.SquareMarkerTracking; using Swarp.SDK.Tracking; using Swarp.SDK.DirectShowInput;
static class Program { /// <summary> /// . /// </summary> private static AugmentedRealityManager _arManager; /// <summary> /// . /// </summary> private static ITrackable _houseTrackable; /// <summary> /// The main entry point for the application. /// </summary> [STAThread] public static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); } }
// . var camera = CameraManager.Instance.GetFirstWorkedCamera(); // , . if (camera == null) { MessageBox.Show(Resources.CameraNotFoundString, Resources.WarningString, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var displayParameters = new DisplayParameters(30, new Size(800, 600)); // , . camera.DisplayParameters = camera.IsSupportedDisplayParameters(displayParameters) ? displayParameters : camera.GetSupportedDisplayParameters()[0];
var tracker = new SquareMarkerTracker(1); // 1 . . _houseTrackable = new SquareMarker("House Marker", "Trackable\\5.trackable"); tracker.TrackableObjects.Add(_houseTrackable);
// , . var ogreSimpleSceneForm = new Form { Size = new Size(1066, 600), Text = Resources.SwarpSDKExampleString, Icon = Resources.Swarp, }; // . // plugins.cfg - Ogre3D. // ogre.cfg - , Ogre3D. // ogre.log - -, Ogre3D. // , // . var renderer = new Ogre3DRenderSystem(ogreSimpleSceneForm.Handle, "OgreConfig\\plugins.cfg", "OgreConfig\\ogre.cfg", "OgreConfig\\ogre.log") { SizeMode = SizeMode.Autosize }; // . // // (3D , .., Ogre3D ). renderer.LoadResources("OgreConfig\\resources.cfg"); // . . var houseScene = new Ogre3DScene(renderer.Root, "House Scene"); renderer.Scenes.Add(houseScene); LoadScene(houseScene.SceneManager);
# Resource locations to be added to the 'boostrap' path # This also contains the minimum you need to use the Ogre example framework [Bootstrap] # Resource locations to be added to the default path [General] FileSystem= FileSystem=Resources Zip=Resources/House.zip
private static void LoadScene(SceneManager sceneManager) { // Mogre, , // .. . http://www.ogre3d.org/tikiwiki/Mogre+Tutorials. // , . var houseNode = sceneManager.RootSceneNode.CreateChildSceneNode("HouseNode"); // ( ). var houseEntity = sceneManager.CreateEntity("House", "House.mesh"); houseNode.AttachObject(houseEntity); houseNode.Scale(6.0f, 6.0f, 6.0f); }
// . _arManager = new AugmentedRealityManager(camera, trackers, renderer); // . // . camera.Start(); // . // . _arManager.Start(); ogreSimpleSceneForm.Show(); while (ogreSimpleSceneForm.Created) { // , // , . UpdateScenes(); // . // , , // . _arManager.Renderer.RenderFrame(); // . Application.DoEvents(); } // . _arManager.Dispose(); renderer.Dispose(); camera.Dispose();
private static void UpdateScenes() { // , // , . var foundTrackableObjects = new List<ITrackable>(_arManager.Trackers[0].LastDetectedObjects); // . foreach (var scene in _arManager.Renderer.Scenes) { // , . if (foundTrackableObjects.Contains(_houseTrackable)) { // , . scene.Visible = true; // . var trackablePose =_arManager.Trackers[0].GetPose(_houseTrackable); // . scene.OrientScene(trackablePose); } else { scene.Visible = false; } } }
Source: https://habr.com/ru/post/146041/
All Articles