blender cut a model in half

1. กด delete ที่ cube ที่มีตอนเปิดโปรแกรม

2. import stl file

3. กด tab เพื่อเข้า edit mode

4. กด เลข 1 (show xz axis) หรือ 7 (show xy axis)

5. กด เลข 5 เพื่อจัดให้โมเดล อยู่ตรงกลางของแกน

6. กด spacebar พิมพ์ bisect กด enter

7. ลากเส้น ที่จะตัด

8. กด f6 เลือก fill, ตามด้วย  clear inner หรือ clear outer แล้วแต่ว่าจะลบฝั่งไหน

9. export stl

 

 

**

ctrl+c, ctrl+v = copy paste

ctrl+j = join (merge)

a = deselected

 

hololens spectator view capture

จะทำ ถ่ายวีดีโอ(stream realtimeได้ก็ดี) จาก hololens อีกตัวนึง

 

ที่ไม่ใช้ hololens ตัวที่ userใช้งานอยู่ อัดวีดีโอ first person view

เพราะว่า พอเอากล้องไปอัดวีดีโอแล้ว จะทำ realtime registration ของ vuforia ไม่ได้

พอ user ขยับนิดๆหน่อยๆ hologram มันก็อยู่ไม่ตรงจุดที่จะให้อยู่ละ

 

ถ้าใช้ hololens อีกตัว อัดวีดีโอ third person view ได้ ก็จะดี

แต่ว่าถ้าอัดผ่าน hololens จะอัดวีดีโอได้แค่ 5 นาที (ต้องเขียนโค๊ดเองเพื่อไม่ให้มันจำกัดเวลา…แต่ก็ยังไม่เคยลองอัดเกิน5นาที)

แล้วก็ stream realtime จาก hololens มาที่คอม มัน ช้าๆอยู่นะ

อัดวีดีโอเสร็จไฟล์ก็อยู่ใน hololens ต้องมาลากลงคอมอีก

 

ก็เลยว่าจะใช้ spectator view hololens อัดวีดีโอ/stream hologram

ซึ่ง จาก https://docs.microsoft.com/en-us/windows/mixed-reality/spectator-view

มันมี2วิธี 1.ใช้ iphone/ipad ถ่ายวีดีโอ  2.ใช้กล้องDSLR+hololensอีกตัว ถ่ายวีดีโอ

วิธี Iphone ต้องเป็นรุ่น 6s ขึ้นไป เพราะว่ามันอัด 4K video ได้, ไหนจะต้องใช้เครื่อง mac เขียนโปรแกรม ไปสมัคร apple developer มีแบบฟรีอยู่ ดูยุ่งยาก เลยข้าม

 

วิธีกล้อง DSLR ก็ดูยุ่งยาก พอดีว่า concept ของเค้าคือถ่ายวีดีโอ hidef + hologram ก็เลยต้องใช้กล้อง ที่อัดวีดีโอ 2k, 4k ได้ (จะ gopro ก็ได้)

คราวนี้ พอจะ stream สด ก็ต้องต่อสายวีดีโอเข้าคอม แต่ปกติแล้ว port hdmi ที่คอมเป็น output อย่างเดียว

ก็เลยต้องมี capture card ราคา 25,000yenได้ เพื่อ รับ input hdmi เข้าคอม (แล้วก็ต้องลงโปรแกรมของ capture card อีก)

แล้ววีธีนี้คือ เอากล้องตั้งไว้ เอา hololens วางไว้บนกล้องเพื่อ  calibrate ระบุตำแหน่ง

แต่พอเริ่มอัดวีดีโอแล้ว ห้ามขยับกล้อง เดี่ยว hologram เคลื่อน…

 

คือว่าถ้าใช้กล้องทั่วไปที่มันมีสาย usb ต่อคอมจะสะดวกกว่ารึป่าวนะ..

ก็มีคนลองใช้ กล้อง webcam ธรรมดา เห็นว่าก็ใช้ได้อยู่ แต่ไม่ ok เพราะว่า fov กล้องwebcam มันแคบ เค้าบอกว่าต้องติดเลนส์เพิ่ม…แล้วก็ ลำดับสี rbg มันเรียงสลับกันอะไรสักอย่าง แต่ไม่ได้เป็นปัญหาตอน calibrate

คุ้นๆว่าจะต้องแก้โค๊ดนิดหน่อย ตอนเปิดกล้อง ให้เปิดกล้องก่อนเซ็ต resolutionกล้อง ไม่งั้นมันจะ error

 

แล้วก็มีคนใช้ zed (depth camera) ทำ อันนี้น่าสนใจ เห็นบอกว่า พอ calibrate เสร็จ ก็ถอด hololens ออกได้

ตอนถ่ายวีดีโอจะแพนกล้องนิดๆหน่อยๆก็ไม่มีปัญหา เพราะ zed มันเป็น 6DOF trackตำแหน่งได้

 

ส่วนของตัวเอง ตอนนี้มี kinectv2 อยู่ ว่าจะลองต่อดู…

แล้วก็ต้องเขียน app ให้มัน share hologram ได้…

Using Markers with World Anchors in Mixed Reality Scene Sharing

Using Markers with World Anchors in Mixed Reality Scene Sharing

 

Hololens + Vuforia

พอดีว่า ใช้ Hololens RS4 อยู่(อันใหม่) จะเจอ

[ERROR] Failed to get spatial interaction controller – touchpad, thumbstick, and vendor data will be unavailable to the application for InteractionController! Error code: ‘0x00000000’.

ตอนที่กล้องจับภาพเห็นมือเรา

วิธีแก้ คือใช้ unity2017.4.1f1++ ที่เค้า patch error เอาไว้แล้ว

ซึ่งตามมาด้วย vuforia เวอร์ชั่นใหม่ ซึ่งต่างกับเวอร์ชั่นเก่าตรงที่ ARCamera ของ vuforiaไม่มีช่องให้ลิงค์กับ HololensCamera

วิธี setup อันใหม่ ก็จะประมาณนี้ (ไม่ใช้ ARCamera ละ)

1.Build Setting > Switch to UWP Platform

2.Player setting >

– XR Setting > Check Virtual Reality Support, Vuforia AR

– Publishing Setting > Capabilities > Check InternetClient, Webcam, Microphone

– Other Setting > Scripting Backend = .NET

3. Build Setting > check debugging Unity c# project

4.Import HoloToolkit-Unity-v1.2017.2.0

delete Main Camera

Drag drop HololensCamera > Add component =Vuforia Behavior

-Clipping planes near=0.01

-World Center Mode = CAMERA

– Open Vuforia configuration > Add License key from

https://developer.vuforia.com/targetmanager/licenseManager/licenseListing

-Max simultaneous tracked Image = 4 (แล้วแต่จำนวนว่ามีกี่อัน)

-Device type = Digital Eyewear

-Device Config = Hololens

-Check Load Museum Database, Activate

(รอซักพักให้มัน connect license key แล้ว จะมีชื่อ database ของเราโผล่ขึ้นมา)

5. Add image file (max 2 mb) to track at

https://developer.vuforia.com/targetmanager/project/deviceTargetListing

6. Select image to use > Click “Download Database” Button

-get (image database) unity package file > ลากเข้า unity

7. GameObject > Vuforia > Image

จะได้ Gameobject ชื่อ ImageTarget

-Transform scale = 1

-Database = museum

-Image Target = ชื่อภาพที่จะใช้ track

-Advance > Check Extended Tracking

 

Optional

  1. Add notice of display area : Canvas_debugarea.prefab, Render Camera = HololensCamera
  2. Add Cursor.prefab
  3. Add InputManager.prefab
  4. Add spawncube : Spawncube.cs
  5. Add debug broadcast : DebugLogBroadcaster.cs

 

Hololens spawn cube + debug screen

กลับมาแตะ hololensอีกรอบ แบบหลงๆลืมๆ

1. new project on Unity5.6.5f1

2. import holotoolkit

https://github.com/Microsoft/MixedRealityToolkit-Unity/blob/master/External/Unitypackages/HoloToolkit-Unity-v1.5.6.0.unitypackage

3. Drag-drop HololensCamera,InputManager,Cursor

4.Code for spawn cube when airtap

ตรง inherit IInputClickHander, กับ เรียก PushFallbackInputHandler นี่สำคัญ ถ้าไม่ใส่  จะ airtab ไม่ติด

5. Create UI Image เพื่อสร้างขอบกำหนดระยะที่ hololensจะแสดงผล
ถ้าลองRemote Hololens แล้ว Run ดู จะเห็นว่า Display=1280*720

ตรง Canvas > Render mode = Screen space – camera แล้ว canvas จะ lock ติดจอ

ลองกำหนด ขนาด image หลายๆค่า สรุปว่า ขอบที่ width = 50 ตอน remote ดูแล้วจะมองไม่เห็น หรือเห็นเป็นเส้นลางๆ
(ถ้าcaptureมา มันจะเห็นครึ่งนึง แต่จริงๆแล้วมองด้วยตาไม่เห็นเยอะขนาดนั้น)

เลยใช้ width=55 เพื่อตอนเล่นจะได้เห็นระยะว่า กล้องมันจับภาพ/แสดงผล ช่วงระยะไหน

** พอลอง deploy ดู เห็นขอบเต็มๆเลยอ่า..เลยใช้ค่าที่ 25

6. Create UI Text อันนี้เอาไว้ แสดงผล ตอนเราใช้ Debug.Log();

7. Code for show DebugLog

อย่าลืมลาก textbox UI มาใส่ที่โค๊ดนี้ใน hierarchy

8. ก็จะได้ output ประมาณนี้

โค๊ดนี้ พอเรายกนิ้วขึ้น cursor จะไม่ขึ้น, cursor จะโชว์ตอนที่ gazeเราไปชนกับ cube เท่านั้น
คิดว่าเป็นเพราะไม่ได้ใส่ SpatialMapping prefab ไปใน hierarchy ก็เลย ไม่รู้ตำแหน่งที่gazeไปชนกับ object(mesh) ก็เลยแสดง cursor กลางอากาศไม่ได่

Hololens stuff

Holographic Remoting Host

https://github.com/Microsoft/MixedRealityCompanionKit/tree/master/RemotingHostSample

  • Establishes a connection with the HoloLens
  • Receives a data stream with input from a HoloLens
  • Renders content in a virtual holographic view
  • Streams content frames back to the HoloLens in real-time
  1. ใน vs2015 คลิกขวาที่ project ->Manage NuGet Packages -> browse Holographic Remoting ->download ,จะได้ build success
  2. เข้า Holographic remote player เอา ipมาใส่แทน 127.0.0.1 ใน RemotingHostSampleDesktop.cpp
  3. vs2015> start debugging
  4. กด space bar เพื่อ connect ไปยัง hololens
  5. กด p เพื่อ play/pause   ในคอม cube จะ หยุดหมุน ,ใน hololens cube จะหมุนต่อ

 

 

ใน AppMain.cpp มี

  • โค๊ดรับ voice input ไปเปลี่ยนสี cube
  • Saved cube position to SpatialAnchorStore.
  • Loaded cube position from SpatialAnchorStore.

เราจะ เรียกอ่านค่า ใน anchor store ได้รึป่าวนะ..

 

https://docs.microsoft.com/en-us/windows/mixed-reality/add-holographic-remoting

มีอธิบายวิธีใช้ HolographicStreamerHelpers class ที่ handling remoting

 


Create a new UWP : holographic DirectX project (A holographic app can be a UWP app or a Win32 app)

https://docs.microsoft.com/en-us/windows/mixed-reality/creating-a-holographic-directx-project

  • The project template shows how to create a world-locked cube that’s placed two meters from the user.
  • The user can air-tap, or press a button on the controller,
  • to place the cube in a different position that’s specified by the user’s gaze.

new project

ตัว Holographic Directx11 App เนี่ย vs2017ใน pc มี แต่ใน notebook ไม่มีแฮะ..

The holographic app templates are included in the same installer as the Microsoft HoloLens emulator.

Also ensure that the option to install the templates is selected before installing.

ออ notebook ลง hololens emulator ไม่ได้ (ไม่มี hyper-v hardware) เลยไม่มี Holographic Directx11 App template

Handle to Object Operator (^) (C++ Component Extensions) https://msdn.microsoft.com/en-us/library/yk97tc08.aspx

the “^” symbol to declare a variable somewhat similar to a pointer that can reference an object on the managed heap.

in Content/SpinningCubeRenderer.cpp

The default hologram in the template is a spinning cube that’s placed two meters away from the user.

Hololens02 os build : 10.0.14393.2125

Hololens window update เป็น 10.0.17134.111 ละ

ลอง deploy ลง hololens แต่ว่า DEP6720: Failed to deploy package ‘Standard Collector Bridge’
DEP6959: Error removing the file from the remote device

ในเน็ตบอกว่า ให้ ทำ factory reset … (บางคนพึ่งมามีปัญหาหลัง update)


Holographic spatial mapping sample (UWP app in cpp)

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/HolographicSpatialMapping

ดาวโหลด ทั้งโฟลเดอร์ window universal samples,

มีตัวอย่าง hololensหลายอันอยู่

เข้า vs2017 open solution : HolographicSpatialMapping.sln

project properties > เปลี่ยน target platform version ให้ตรงกับ hololens

ลอง build ดูก่อนรอบนึง เจอ error DEP6720: Failed to deploy package ‘Standard Collector Bridge’ เหมือนเดิม

 

ลองเอา hololens01 os 10.0.14393.2248 มา deploy ดู…deploy ใน pc ผ่าน ….

เอา hololens02 os 10.0.17134.111 ไป deploy ใน notebook ที่ลง vs2017 ใหม่….deploy ผ่าน

เอา hololens02 กลับมา deploy ใน pc…ก็ deploy ผ่านละ แบบ งงๆ

work step

pc : deploy Holographic Directx11 App on hololens02 error

pc: deploy HolographicSpatialMapping on hololens02 error

pc: deploy HolographicSpatialMapping on hololens01 successful

pc : deploy Holographic Directx11 App on hololens01 successful

notebook : deploy DirectX11 and XAML App on hololens02 successful

notebook : deploy HolographicSpatialMapping on hololens02 successful

pc : deploy Holographic Directx11 App on hololens02 successful

อาจจะเกี่ยวกับ target version มั๊ยนะ..


Spatial mapping in DirectX

https://docs.microsoft.com/en-us/windows/mixed-reality/spatial-mapping-in-directx

 


HoloLensForCV

https://github.com/Microsoft/HoloLensForCV


HoloLens Terrain Generation

http://thedemonthrone.ca/projects/hololens-terrain-generation-demo/

 


Todo: remote rendering, process at pc server

  1. รับ environment mesh, initial position จาก hololens มาไว้ที่ pc server
  2. mark ตำแหน่ง anchor ใน hololens ส่งไปเก็บไว้ใน server
  3. mark ตำแหน่ง anchor ที่ server ส่งค่าไป update ที่ hololens

hololens render tradeoff

1. On-board GPU rendering

  • update position on screeen real-time when user head move
  • low power of mobile CPU and GPU
  • low visual fidelity but good framerate

2. Remote rendering

  • send user head position to Server
  • get pre-rendered image via low bandwidth wifi (802.11ac, 1.3 gigabits per second)
  • has latency -> positioning of virtual object is unstable

avatar pointing note

จะทำ avatar ให้ชี้ที่วัตถุได้แบบ แม่นยำ

ที่เห็นในโปรแกรม smartbody ก็คือ ทำ animation ทิ้งไว้หลายๆอัน ชี้ซ้ายขวา ขึ้นลง สูงต่ำ  ประมาณ40กว่าอัน

เสร็จแล้วก็มี ฟังก์ชัน pointing(ใส่วัตถุที่จะชี้) ซึ่งมันจะหา animation ที่มีตำแหน่งของมือที่ชี้ อยู่ใกล้ ตำแหน่งจริงที่จะชี้ มากที่สุด

แต่ว่า พอของที่จะชี้ มันอยู่ไกล…animationที่โปรแกรมเลือกมาให้เลยชี้ไม่ตรงของที่จะให้ชี้ (ไม่ตรงแบบเหมือนชี้มั่ว…หรือมันหา animation ให้ไม่ได้เลย random เอานะ?)

เห็นว่าถ้าเป็นฟังก์ชัน grab(ใส่วัตถุที่จะจับ) โปรแกรทก็จะเลือก animation ที่ใกล้ๆมาให้ แล้วก็ทำ inverse kinematic เพื่อยืดมือออกไปจับของอะนะ (แต่ไม่ได้ลองว่าถ้าของอยู่ไกลเกินมือเอื้อมจะเป็นยังไงแฮะ)

**

เราเลยพบว่า การเตรียม animation ทิ้งไว้นั้น ลำบาก เสียเวลา แถมยังชี้ไม่ตรงอีก(หรือไม่ก็ต้องมีanimationเตรียมไว้เยอะมากๆ)

เลยจะเสนอ algorithm สำหรับ pointing…ซึ่งมันก็คือ inverse kinematic 2 ข้อต่อ (ของคนอื่นเค้าเขียนทิ้งให้ใช้ฟรี….)

พอเอามาลองใช้แล้ว ก็เจอว่า แขนมันบิดผิดรูป กับ มือไม่แผ่มาหาทาง user (แบบว่าเวลาจะแนะนำอะำร มือมันควรจะหันออกมาทางคนที่กำลังพูดด้วย)

ตอนนี้ลอง fix องศาหมุนมือให้หันกาuserอยู่ แต่ก็ดูไม่สมจริงนิดนึง

กับถ้า เปลี่ยนตำแหน่ง avatar องศาที่fixไว้ มันใช้ไม่ได้ กลายเป็นชี้มั่วแขนบิดไปเลย…

กับอีกอันคือ ชี้มือขวา หรือมือซ้าย น่าจะทำให้มัน auto ได้นะ….

***

ยังมีัเรื่องของ ตำแหน่งของ avatar พอจะให้มันเดินหลบ หรือเดินตาม user ได้..

คือถ้าเขยิบนิดๆก็okอยู่…แต่พอต้องเขยิบมากๆ อยู่ใกล้ user เกินไป  , user เดินไปอีกทางละ จะเดินตามอะไรยังไงตอนไหนดี….