示例#1
0
 protected override void InitializeAR()
 {
     arCore = scene.CreateComponent <ARCoreComponent>();
     arCore.ARFrameUpdated  += OnARFrameUpdated;
     arCore.ConfigRequested += OnConfigRequested;
     arCore.Run();
 }
示例#2
0
 void SetupAR()
 {
     ArCore = Scene.CreateComponent <ARCoreComponent>();
     ArCore.ARFrameUpdated  += OnARFrameUpdated;
     ArCore.ConfigRequested += ArCore_ConfigRequested;
     ArCore.Run();
 }
示例#3
0
        protected override void Start()
        {
            // 3d scene with octree and ambient light
            var scene  = new Scene(Context);
            var octree = scene.CreateComponent <Octree>();

            zone = scene.CreateComponent <Zone>();
            zone.AmbientColor = new Color(1, 1, 1) * 0.2f;

            //my comments

            // Camera
            var cameraNode = scene.CreateChild(name: "Camera");
            var camera     = cameraNode.CreateComponent <Urho.Camera>();

            // Light
            var lightNode = cameraNode.CreateChild();

            lightNode.SetDirection(new Vector3(1f, -1.0f, 1f));
            var light = lightNode.CreateComponent <Light>();

            light.Range             = 10;
            light.LightType         = LightType.Directional;
            light.CastShadows       = true;
            Renderer.ShadowMapSize *= 4;

            // Viewport
            viewport = new Viewport(Context, scene, camera, null);
            Renderer.SetViewport(0, viewport);

            // ARCore component
            ArCore = new ARCoreComponent();
            ArCore.ARFrameUpdated  += OnARFrameUpdated;
            ArCore.ConfigRequested += ArCore_ConfigRequested;
            ArCore.Camera           = camera;
            scene.AddComponent(ArCore);

            // Mutant
            mutantNode          = scene.CreateChild();
            mutantNode.Position = new Vector3(0, -0.5f, 0.5f);             // 50cm Y, 50cm Z
            mutantNode.SetScale(0.3f);
            var model = mutantNode.CreateComponent <AnimatedModel>();

            model.CastShadows = true;
            model.Model       = ResourceCache.GetModel("Models/Mutant.mdl");
            model.Material    = ResourceCache.GetMaterial("Materials/mutant_M.xml");
            var ani = mutantNode.CreateComponent <AnimationController>();

            ani.Play("Animations/Mutant_HipHop1.ani", 0, true, 1f);

            fps = new MonoDebugHud(this);
            fps.Show(Color.Blue, 20);

            // Add some post-processing (also, see CorrectGamma())
            viewport.RenderPath.Append(CoreAssets.PostProcess.FXAA2);

            Input.TouchBegin += OnTouchBegin;
            Input.TouchEnd   += OnTouchEnd;
        }
示例#4
0
        protected override void Start()
        {
            base.Start();

            arCore = Scene.CreateComponent <ARCoreComponent>();
            arCore.ARFrameUpdated += OnARFrameUpdated;
            arCore.Camera          = Camera;
        }
示例#5
0
 void SetupAR()
 {
     ArCore = new ARCoreComponent();
     ArCore.ARFrameUpdated  += OnARFrameUpdated;
     ArCore.ConfigRequested += ArCore_ConfigRequested;
     ArCore.Camera           = Camera;
     Scene.AddComponent(ArCore);
 }
示例#6
0
        protected override void Start()
        {
            var scene  = new Scene(Context);
            var octree = scene.CreateComponent <Octree>();

            var cameraNode = scene.CreateChild(name: "Camera");
            var camera     = cameraNode.CreateComponent <Urho.Camera>();

            zone = scene.CreateComponent <Zone>();
            zone.AmbientColor = new Color(1, 1, 1) * 0.2f;

            var lightNode = cameraNode.CreateChild();

            lightNode.SetDirection(new Vector3(1f, -1.0f, 1f));
            var light = lightNode.CreateComponent <Light>();

            light.Range             = 10;
            light.LightType         = LightType.Directional;
            light.CastShadows       = true;
            Renderer.ShadowMapSize *= 4;

            // Viewport
            viewport = new Viewport(Context, scene, camera, null);
            Renderer.SetViewport(0, viewport);

            // ARCore component
            ArCore = scene.CreateComponent <ARCoreComponent>();
            ArCore.ARFrameUpdated  += OnARFrameUpdated;
            ArCore.ConfigRequested += ArCore_ConfigRequested;
            ArCore.Run();

            var mutantNode = scene.CreateChild();

            mutantNode.Position = new Vector3(0, -0.5f, 0.5f); // 50cm Y, 50cm Z
            mutantNode.SetScale(0.3f);
            var model = mutantNode.CreateComponent <StaticModel>();

            model.CastShadows = true;
            model.Model       = ResourceCache.GetModel("Models/Box.mdl");
            model.Material    = ResourceCache.GetMaterial("Materials/DefaultGrey.xml");


            fps         = new MonoDebugHud(this);
            fps.FpsOnly = true;
            fps.Show(Color.Blue, 25);
        }
示例#7
0
        protected override async void Start()
        {
            base.Start();

            arCore = Scene.CreateComponent <ARCoreComponent>();

            var boxNode = Scene.CreateChild();

            boxNode.Position = new Vector3(0, 0, 0.5f);
            boxNode.CreateComponent <Pyramid>();
            boxNode.SetScale(0.1f);

            hud = new MonoDebugHud(this);
            hud.Show(Color.Green, 40);

            Input.TouchEnd += Input_TouchEnd;
            await arCore.Run(Camera);
        }
示例#8
0
        void OnARFrameUpdated(Frame frame)
        {
            if (touchX != 0)
            {
                var hitResult = frame.HitTest(touchX, touchY);
                foreach (var hit in hitResult.Take(1))
                {
                    var track = hit.Trackable;
                    if ((track is Com.Google.AR.Core.Plane plane && plane.IsPoseInPolygon(hit.HitPose)) ||
                        (track is Com.Google.AR.Core.Point point && point.GetOrientationMode() == OrientationMode.EstimatedSurfaceNormal))
                    {
                        var anchor = hit.CreateAnchor();

                        var testNode = Scene.CreateChild();
                        testNode.CreateComponent <Urho.Shapes.Cylinder>().Color = Color.Green;
                        var pose = hit.HitPose;
                        testNode.Scale = new Vector3(0.1f, 0.2f, 0.1f);

                        ARCoreComponent.TransformByPose(testNode, pose);
                    }
                }
                touchX = touchY = 0;
            }
        }