
Vietnamese: 
Xin chào.
Chào mừng bạn đến với phiên giới thiệu ARKit.
Tên tôi là Mike.
Tôi là một kỹ sư từ đội ARKit.
Và hôm nay tôi rất vui mừng được trò chuyện với bạn về các khái niệm cũng như mã đi vào
tạo trải nghiệm thực tế bổ sung của riêng bạn trên iOS.
[Cheering and Applause] Cảm ơn bạn.
Tôi biết nhiều bạn đang mong muốn bắt đầu với thực tế gia tăng.
Hãy chỉ cho bạn thấy nó đơn giản như thế nào là sử dụng ARKit.
Nhưng trước tiên, thực tế tăng thêm là gì?
Thực tế gia tăng là tạo ảo giác rằng các đối tượng ảo được đặt trong một vật thể
Thế giới.

English: 
Good afternoon.
Welcome to our session introducing ARKit.
My name is Mike.
I'm an engineer from ARKit team.
And today I'm thrilled to talk to you about
the concepts as well as the code that go into
creating your very own augmented reality experience
on iOS.
[ Cheering and Applause ] Thank you.
I know many of you are eager to get started
with augmented reality.
Let's show you just how easy it is using ARKit.
But first, what is augmented reality?
Augmented reality is creating the illusion
that virtual objects are placed in a physical
world.

English: 
It's using your iPhone or your iPad as a lens
into a virtual world based on what your camera
sees.
Let's take a look at some examples.
We gave a group of developers early access
to ARKit.
And here's what they made.
This is a sneak peek at some things you might
see in the near future.
Within, a company focused on immersive storytelling,
tells the story of Goldilocks using AR.
Transforming a bedroom into a virtual storybook,
they allow you to progress a story by reciting
the text, but even more importantly, they
allow you to explore the scene from any angle.
This level of interactivity really helps bring
your virtual scene alive.
Next, Ikea used ARKit in order to redesign
your living room.

Vietnamese: 
Nó sử dụng iPhone hoặc iPad của bạn như một ống kính vào thế giới ảo dựa trên camera của bạn
nhìn.
Chúng ta hãy xem xét một số ví dụ.
Chúng tôi đã cho một nhóm các nhà phát triển truy cập sớm vào ARKit.
Và đây là những gì họ làm.
Đây là một bước lén nhìn vào một số điều bạn có thể thấy trong tương lai gần.
Bên trong, một công ty tập trung vào việc kể chuyện nhập vai, kể câu chuyện về Goldilocks bằng cách sử dụng AR.
Chuyển một phòng ngủ thành một cuốn sách truyện ảo, chúng cho phép bạn tiến bộ một câu chuyện bằng cách đọc
văn bản, nhưng quan trọng hơn, chúng cho phép bạn khám phá hiện trường từ mọi góc độ.
Mức tương tác này thực sự giúp mang lại cảnh ảo của bạn sống động.
Tiếp theo, Ikea đã sử dụng ARKit để thiết kế lại phòng khách của bạn.

Vietnamese: 
Bằng cách có thể đặt nội dung ảo bên cạnh các đối tượng vật lý, bạn mở ra một thế giới
khả năng cho người dùng của bạn.
Và cuối cùng, trò chơi.
Pokemon Go, một ứng dụng mà bạn có thể đã nghe nói, đã sử dụng ARKit để bắt Pokemon
đến cấp độ tiếp theo.
Bằng cách neo giữ nội dung ảo của bạn trong thế giới thực, bạn thực sự cho phép
trải nghiệm sâu sắc hơn trước đây có thể.
Nhưng nó không dừng lại ở đó.
Có rất nhiều cách để bạn có thể sử dụng thực tế gia tăng để nâng cao người dùng của bạn
không trải nghiệm.
Vì vậy, chúng ta hãy xem những gì đi vào đó.
Có rất nhiều kiến ​​thức về miền đang đi vào việc tạo ra thực tế gia tăng.
Tất cả mọi thứ từ tầm nhìn máy tính, để cảm biến nhiệt hạch, để nói chuyện với phần cứng để
có được hiệu chỉnh máy ảnh và nội tại của máy ảnh.
Chúng tôi muốn giúp bạn dễ dàng hơn.

English: 
By being able to place virtual content next
to physical objects, you open up a world of
possibilities to your users.
And last, games.
Pokemon Go, an app that you've probably already
heard of, used ARKit to take catching Pokemon
to the next level.
By being able to anchor your virtual content
in the real world, you really allow for a
more immersive experience than previously
possible.
But it doesn't stop there.
There are a multitude of ways that you can
use augmented reality to enhance your user
experience.
So let's see what goes into that.
There's a large amount of domain knowledge
that goes into creating augmented reality.
Everything from computer vision, to sensor
fusion, to talking to hardware in order to
get camera calibrations and camera intrinsics.
We wanted to make this all easier for you.

English: 
So today we're introducing ARKit.
ARKit is a mobile AR platform for developing
augmented reality apps on iOS.
It is a high level API providing a simple
interface to a powerful set of features.
But more importantly, it's rolling out supporting
hundreds of millions of existing iOS devices.
In order to get the full set of features for
ARKit, you're going to want an A9 and up.
This is most iOS 11 devices, including the
iPhone 6S.
Now let's talk about the features.
So what does ARKit provide?
ARKit can be broken up into three distinct
layers, the first of which is tracking.
Tracking is the core functionality of ARKit.
It is the ability to track your device in
real time.
With world tracking we provide you the ability
to get your device's relative position in
the physical environment.
We use visual inertial odometry, which is
using camera images, as well as motion data

Vietnamese: 
Vì vậy, hôm nay chúng tôi giới thiệu ARKit.
ARKit là nền tảng AR di động để phát triển các ứng dụng bổ sung trên iOS.
Đây là một API cấp cao cung cấp một giao diện đơn giản cho một bộ các tính năng mạnh mẽ.
Nhưng quan trọng hơn, nó đang tung ra hỗ trợ hàng trăm triệu thiết bị iOS hiện có.
Để có được đầy đủ các tính năng cho ARKit, bạn sẽ muốn có một chiếc A9 trở lên.
Đây là hầu hết các thiết bị iOS 11, bao gồm cả iPhone 6S.
Bây giờ hãy nói về các tính năng.
Vậy ARKit cung cấp cái gì?
ARKit có thể được chia thành ba lớp khác biệt, phần đầu tiên là theo dõi.
Theo dõi là chức năng cốt lõi của ARKit.
Đó là khả năng theo dõi thiết bị của bạn trong thời gian thực.
Với tính năng theo dõi thế giới chúng tôi cung cấp cho bạn khả năng nhận được vị trí tương đối của thiết bị trong
môi trường vật lý.
Chúng tôi sử dụng phép đo quán tính quán tính trực quan, sử dụng hình ảnh của máy ảnh, cũng như dữ liệu chuyển động

Vietnamese: 
từ thiết bị của bạn để có được một cái nhìn chính xác về nơi mà thiết bị của bạn cũng nằm
như cách nó được định hướng.
Nhưng cũng quan trọng hơn, không yêu cầu thiết lập bên ngoài, không có kiến ​​thức sẵn có
về môi trường của bạn, cũng như không có cảm biến bổ sung mà bạn chưa có trên
Thiết bị
Tiếp theo, xây dựng theo dõi chúng tôi cung cấp sự hiểu biết cảnh.
Sự hiểu biết về cảnh là khả năng xác định thuộc tính hoặc thuộc tính về môi trường
xung quanh thiết bị của bạn.
Nó cung cấp những thứ như phát hiện máy bay.
Phát hiện máy bay là khả năng xác định bề mặt hoặc mặt phẳng trong môi trường vật lý.
Đây là những thứ như tầng trệt hoặc có thể là một cái bàn.
Để đặt các đối tượng ảo của bạn, chúng tôi cung cấp chức năng kiểm tra ấn.
Vì vậy, đây là nhận được một giao lộ với topology thế giới thực để bạn có thể đặt
đối tượng ảo của bạn trong thế giới vật lý.
Và cuối cùng, sự hiểu biết về cảnh cung cấp ước lượng nhẹ.
Ước lượng ánh sáng được sử dụng để hiển thị hoặc chính xác ánh sáng hình học ảo của bạn để khớp

English: 
from your device in order to get a precise
view of where your device is located as well
as how it is oriented.
But also, more importantly, there's no external
setup required, no pre-existing knowledge
about your environment, as well as no additional
sensors that you don't already have on your
device.
Next, building upon tracking we provide scene
understanding.
Scene understanding is the ability to determine
attributes or properties about the environment
around your device.
It's providing things like plane detection.
Plane detection is the ability to determine
surfaces or planes in the physical environment.
This is things like the ground floor or maybe
a table.
In order to place your virtual objects, we
provide hit testing functionality.
So this is getting an intersection with the
real world topology so that you can place
your virtual object in the physical world.
And last, scene understanding provides light
estimation.
So light estimation is used to render or correctly
light your virtual geometry to match that

English: 
of the physical world.
Using all of these together we can seamlessly
integrate virtual content into your physical
environment.
And so the last layer of ARKit is rendering.
For rendering we provide easy integration
into any renderer.
We provide a constant stream of camera images,
tracking information as well as scene understanding
that can be inputted into any renderer.
For those of you using SceneKit or SpriteKit,
we provide custom AR views, which implement
most of the rendering for you.
So it's really easy to get started.
And for those of you doing custom rendering,
we provide a metal template through Xcode,
which gets you started integrating ARKit into
your custom renderer.
And one more thing, Unity and UnReal will
be supporting the full set of features from
ARKit.
So, are you guys ready?
Let's get started.

Vietnamese: 
của thế giới vật chất.
Sử dụng tất cả những điều này cùng nhau, chúng tôi có thể tích hợp nội dung ảo vào môi trường vật lý
môi trường ·đó.
Và vì vậy lớp cuối cùng của ARKit đang hiển thị.
Đối với rendering chúng tôi cung cấp tích hợp dễ dàng vào bất kỳ trình kết xuất nào.
Chúng tôi cung cấp một luồng liên tục của hình ảnh camera, theo dõi thông tin cũng như sự hiểu biết cảnh
có thể được nhập vào bất kỳ trình kết xuất nào.
Đối với những người bạn sử dụng SceneKit hoặc SpriteKit, chúng tôi cung cấp chế độ xem AR tùy chỉnh, thực hiện
hầu hết các rendering cho bạn.
Vì vậy, nó thực sự dễ dàng để bắt đầu.
Và đối với những người bạn đang làm rendering tùy chỉnh, chúng tôi cung cấp một mẫu Metal thông qua Xcode,
giúp bạn bắt đầu tích hợp ARKit vào trình kết xuất tùy chỉnh của mình.
Và một điều nữa, Unity và UnReal sẽ hỗ trợ đầy đủ các tính năng từ
ARKit.
Vì vậy, các bạn đã sẵn sàng chưa?
Băt đâu nao.

Vietnamese: 
Làm cách nào để sử dụng ARKit trong ứng dụng của tôi?
ARKit là một khuôn khổ để xử lý tất cả các quá trình xử lý mà đi vào tạo ra một augmented
kinh nghiệm thực tế.
Với renderer của sự lựa chọn của tôi, tôi chỉ đơn giản là có thể sử dụng ARKit để làm việc chế biến.
Và nó sẽ cung cấp tất cả mọi thứ mà tôi cần để làm cho cảnh thực tế tăng cường của tôi.
Ngoài việc xử lý, ARKit cũng xử lý việc thu giữ được thực hiện để thực hiện
tăng cường thực tế.
Vì vậy, sử dụng AVFoundation và Core Motion bên dưới mui xe, chúng tôi chụp hình ảnh cũng như nhận được
chuyển dữ liệu từ thiết bị của bạn để thực hiện theo dõi và cung cấp những hình ảnh cho máy ảnh
renderer của bạn.
Vì vậy, bây giờ làm thế nào để tôi sử dụng ARKit?
ARKit là một API dựa trên phiên.
Điều đầu tiên bạn cần làm để bắt đầu đơn giản là tạo ra một ARSession.
ARSession là đối tượng kiểm soát tất cả các quá trình xử lý để tạo ra
ứng dụng thực tế bổ sung của bạn.
Nhưng trước tiên, tôi cần phải xác định loại theo dõi nào tôi muốn làm cho sự kiện gia tăng của tôi
Ứng dụng

English: 
How do I use ARKit in my application?
ARKit is a framework that handles all of the
processing that goes into creating an augmented
reality experience.
With the renderer of my choice, I can simply
use ARKit to do the processing.
And it will provide everything that I need
to render my augmented reality scene.
In addition to processing, ARKit also handles
the capturing that is done in order to do
augmented reality.
So using AVFoundation and Core Motion under
the hood, we capture images as well as get
motion data from your device in order to do
tracking and provide those camera images to
your renderer.
So now how do I use ARKit?
ARKit is a session-based API.
The first thing you need to do to get started
is simply create an ARSession.
ARSession is the object that controls all
of the processing that goes into creating
your augmented reality app.
But first I need to determine what kind of
tracking I want to do for my augmented reality
app.

English: 
So, to determine this we're going to create
an AR session configuration.
AR session configuration, and its subclasses
determine what tracking you want to run on
your session.
By enabling and disabling properties, you
can get different kinds of scene understanding
and have your ARSession do different processing.
In order to run my session, I simply call
the Run method on ARSession providing the
configuration I want to run.
And with that, processing immediately starts.
And we also set up the capturing underneath.
So under the hood you'll see there's an AV
capture session and a CM motion manager that
get created for you.
We use these to get image data as well as
the motion data that's going to be used for
tracking.
Once processing is done, ARSession will output
ARFrames.
So an ARFrame is a snapshot in time, including
all of the state of your session, everything
needed to render your augmented reality scene.
In order to access ARFrame, you can simply
call or pull the current frame property from
you ARSession.

Vietnamese: 
Vì vậy, để xác định điều này, chúng ta sẽ tạo ra một cấu hình AR session.
Cấu hình phiên AR và các lớp con của nó xác định theo dõi bạn muốn chạy trên
phiên của bạn.
Bằng cách bật và vô hiệu hóa thuộc tính, bạn có thể nhận được các loại hiểu biết cảnh khác nhau
và ARSession của bạn làm chế biến khác nhau.
Để chạy phiên của tôi, tôi chỉ cần gọi phương pháp Run trên ARSession cung cấp
cấu hình tôi muốn chạy.
Và với điều đó, chế biến ngay lập tức bắt đầu.
Và chúng tôi cũng thiết lập việc thu giữ bên dưới.
Vì vậy, dưới mui xe, bạn sẽ thấy có một phiên chụp AV và một người quản lý chuyển động CM
được tạo ra cho bạn.
Chúng tôi sử dụng các thông số này để lấy dữ liệu hình ảnh cũng như dữ liệu chuyển động sẽ được sử dụng cho
theo dõi #
Sau khi xử lý xong, ARSession sẽ xuất ra ARFrames.
Vì vậy, một ARFrame là một ảnh chụp nhanh về thời gian, bao gồm tất cả trạng thái của phiên làm việc của bạn, mọi thứ
cần thiết để làm cho khung cảnh thực tế gia tăng của bạn.
Để truy cập ARFrame, bạn chỉ cần gọi hoặc kéo thuộc tính khung hiện tại từ
bạn ARSession.

English: 
Or, you can set yourself as the delegate to
receive updates when new ARFrames are available.
So let's take a closer look at ARSessionConfiguration.
ARSession configuration determines what kind
of tracking you want to run on your session.
So it provides different configuration classes.
The base class, ARSessionConfiguration, provides
three degrees of freedom tracking, which is
just the orientation of your device.
Its subclass, ARWorldTracking Session Configuration
provides six degrees of freedom tracking.
So this is using our core functionality world
tracking in order to get not only your device's
orientation, but also a relative position
of your device.
With this we also get information about the
scene.
So we provide scene understanding like feature
points as well as physical positions in your
world.
In order to enable and disable features, you
simply set properties on your session configuration
classes.

Vietnamese: 
Hoặc, bạn có thể đặt mình làm đại biểu để nhận cập nhật khi ARFrames mới có sẵn.
Chúng ta hãy cùng xem xét ARSessionConfiguration.
Cấu hình ARSession xác định loại theo dõi bạn muốn chạy trên phiên.
Vì vậy, nó cung cấp các lớp cấu hình khác nhau.
Lớp cơ sở, ARSessionConfiguration, cung cấp ba mức độ tự do theo dõi, đó là
chỉ là sự định hướng của thiết bị.
Phân lớp phụ của nó, ARWorldTracking Session Configuration cung cấp sáu mức độ theo dõi tự do.
Vì vậy, điều này đang sử dụng chức năng theo dõi thế giới chính của chúng tôi để không chỉ có thiết bị của bạn
định hướng, mà còn là vị trí tương đối của thiết bị của bạn.
Với điều này chúng tôi cũng nhận được thông tin về hiện trường.
Vì vậy, chúng tôi cung cấp sự hiểu biết cảnh như các điểm đặc trưng cũng như các vị trí vật lý trong
Thế giới.
Để bật và tắt các tính năng, bạn chỉ cần đặt thuộc tính trên cấu hình phiên
Các lớp

Vietnamese: 
Và cấu hình phiên cũng cung cấp tính khả dụng.
Vì vậy, nếu bạn muốn kiểm tra xem theo dõi thế giới được hỗ trợ trên thiết bị của mình, bạn chỉ cần
để gọi thuộc tính lớp được hỗ trợ trên ARWorldTracking Session Configuration.
Với tính năng này bạn có thể sử dụng Cấu hình Cấu hình Theo dõi Thế giới hoặc quay trở lại
lớp cơ bản, mà sẽ chỉ cung cấp cho bạn ba độ tự do.
Điều quan trọng cần lưu ý ở đây là vì lớp cơ sở không có bất kỳ sự hiểu biết cảnh
chức năng như kiểm tra lượt truy cập sẽ không có sẵn trên thiết bị này.
Vì vậy, chúng tôi cũng sẽ cung cấp khả năng thiết bị UI được yêu cầu mà bạn đặt trong ứng dụng của mình
để ứng dụng của bạn chỉ xuất hiện trong App Store trên các thiết bị hỗ trợ Theo dõi Thế giới.
Tiếp theo, chúng ta hãy nhìn vào ARSession.
ARSession, một lần nữa, là lớp quản lý tất cả các quá trình xử lý cho sự kiện gia tăng của bạn
Ứng dụng
Ngoài việc gọi Chạy với cấu hình, bạn cũng có thể gọi Tạm dừng.
Vì vậy, Tạm dừng cho phép bạn tạm dừng tất cả quá trình xử lý xảy ra trong phiên của bạn.

English: 
And session configurations also provide availability.
So if you want to check if world tracking
is supported on your device, you simply need
to call the class property isSupported on
ARWorldTracking Session Configuration.
With this you can then use your World Tracking
Session Configuration or fall back to the
base class, which will only provide you with
three degrees of freedom.
It's important to note here that because the
base class doesn't have any scene understanding
functionality like hit tests won't be available
on this device.
So we're also going to provide a UI required
device capability that you set in your app
so that your app only appears in the App Store
on devices that support World Tracking.
Next, let's look at ARSession.
ARSession, again, is the class that manages
all of the processing for your augmented reality
app.
In addition to calling Run with a configuration,
you can also call Pause.
So Pause allows you to temporarily stop all
processing happening on your session.

English: 
So if your view is no longer visible, you
may want to stop processing to stop using
CPU and no tracking will occur during this
pause.
In order to resume tracking after a pause,
you can simply call Run again with the stored
configuration on your session.
And last, you can call Run multiple times
in order to transition between different configurations.
So say I wanted to enable plane detection,
I can change my configuration to enable plane
detection, call Run again on my session.
My session will automatically transition seamlessly
between one configuration and another without
dropping any camera images.
So with the Run command we also provide resetting
of tracking.
So there's Run options that you can provide
on the Run command in order to reset tracking.
It'll reinitialize all of the tracking that's
going on.
And your camera position will start out again
at 000.
So this is useful for your application if
you want to reset it to some starting point.
So how do I make use of ARSessions processing?

Vietnamese: 
Vì vậy, nếu chế độ xem của bạn không còn hiển thị, bạn có thể muốn dừng xử lý để ngừng sử dụng
CPU và không có theo dõi sẽ xảy ra trong thời gian tạm dừng này.
Để tiếp tục theo dõi sau khi tạm dừng, bạn chỉ cần gọi Chạy lại với lưu trữ
cấu hình trên phiên làm việc của bạn.
Và cuối cùng, bạn có thể gọi Run nhiều lần để chuyển tiếp giữa các cấu hình khác nhau.
Vì vậy, nói tôi muốn cho phép phát hiện máy bay, tôi có thể thay đổi cấu hình của tôi để cho phép máy bay
phát hiện, gọi Chạy lại vào phiên làm việc của tôi.
Phiên của tôi sẽ tự động chuyển tiếp liền mạch giữa một cấu hình và một mà không có
bỏ bất kỳ hình ảnh máy ảnh.
Vì vậy, với lệnh Chạy chúng tôi cũng cung cấp đặt lại theo dõi.
Vì vậy, có các tùy chọn Chạy mà bạn có thể cung cấp trên lệnh Chạy để đặt lại theo dõi.
Nó sẽ khởi tạo lại tất cả các quá trình theo dõi đang diễn ra.
Và vị trí máy ảnh của bạn sẽ bắt đầu lại ở mức 000.
Vì vậy, điều này rất hữu ích cho các ứng dụng của bạn nếu bạn muốn thiết lập lại nó cho một số điểm bắt đầu.
Vậy làm cách nào để sử dụng ARSessions xử lý?

Vietnamese: 
Có phiên bản cập nhật có sẵn bằng cách đặt mình làm đại biểu.
Vì vậy, để có được khung hình cuối cùng đã được xử lý, tôi có thể thực hiện phiên didUpdate
Khung.
Và điều này sẽ cho tôi khung mới nhất.
Để xử lý lỗi, bạn cũng có thể thực hiện những thứ như phiên DidFailWithError.
Vì vậy, đây là trong trường hợp của các lỗi gây tử vong.
Có thể bạn đang chạy một thiết bị không hỗ trợ Theo dõi Thế giới.
Bạn sẽ nhận được một lỗi như thế này.
Và phiên của bạn sẽ bị tạm dừng.
Một cách khác để sử dụng xử lý ARSessions là kéo thuộc tính khung hiện tại.
Vậy bây giờ, ARFrame có chứa gì?
Mỗi ARFrame chứa mọi thứ bạn cần để làm cho khung cảnh thực tế tăng cường của bạn.
Điều đầu tiên nó cung cấp là một hình ảnh camera.
Vì vậy, đây là những gì bạn sẽ sử dụng để làm nền của cảnh của bạn.
Tiếp theo, nó cung cấp thông tin theo dõi, hoặc định hướng thiết bị của tôi cũng như vị trí
và thậm chí theo dõi trạng thái.
Và cuối cùng, nó cung cấp sự hiểu biết cảnh.
Vì vậy, thông tin về cảnh như các điểm đặc trưng, ​​vị trí vật lý trong không gian cũng

English: 
There's session updates available by setting
yourself as the delegate.
So in order to get the last frame that was
processed, I could implement session didUpdate
Frame.
And this will give me the latest frame.
For error handling, you can also implement
things like session DidFailWithError.
So this is in the case of the fatal error.
Maybe you're running a device that doesn't
support World Tracking.
You'll get an error like this.
And your session will be paused.
The other way to make use of ARSessions processing
is to pull the current frame property.
So now, what does an ARFrame contain?
Each ARFrame contains everything you need
to render your augmented reality scene.
The first thing it provides is a camera image.
So this is what you're going to use to render
the background of your scene.
Next, it provides tracking information, or
my device's orientation as well as location
and even tracking state.
And last, it provides scene understanding.
So, information about the scene like feature
points, physical locations in space as well

Vietnamese: 
như ước lượng ánh sáng, hoặc một ước tính nhẹ.
Vì vậy, các vị trí vật lý trong không gian, cách mà ARKit đại diện cho chúng là bằng cách sử dụng ARFrames
- hoặc ARAnchors, xin lỗi.
Một ARAnchor là vị trí tương đối hoặc thực tế và định hướng trong không gian.
ARAnchors có thể được thêm vào và loại bỏ khỏi hiện trường của bạn.
Và chúng được sử dụng để biểu diễn cơ bản một nội dung ảo gắn kết với vật lý của bạn
môi trường ·đó.
Vì vậy, nếu bạn muốn thêm một anchor tùy chỉnh, bạn có thể làm điều đó bằng cách thêm nó vào phiên làm việc của bạn.
Nó sẽ tồn tại suốt cả cuộc đời bạn.
Nhưng một điều bổ sung là nếu bạn đang chạy những thứ như phát hiện máy bay, ARAnchors sẽ được thêm vào
tự động đến phiên của bạn.
Vì vậy, để đáp lại điều này, bạn có thể nhận chúng dưới dạng danh sách đầy đủ trong ARFrame hiện tại của bạn.
Vì vậy, sẽ có tất cả các điểm neo mà phiên của bạn hiện đang theo dõi.
Hoặc bạn có thể trả lời các phương pháp ủy thác như thêm, cập nhật và xóa, sẽ thông báo

English: 
as light estimation, or a light estimate.
So, physical locations in space, the way that
ARKit represents these is by using ARFrames
-- or ARAnchors, sorry.
An ARAnchor is a relative or a real-world
position and orientation in space.
ARAnchors can be added and removed from your
scene.
And they're used to basically represent a
virtual content anchored to your physical
environment.
So, if you want to add a custom anchor, you
can do that by adding it to your session.
It'll persist through the lifetime of your
session.
But an added thing is if you're running things
like plane detection, ARAnchors will be added
automatically to your session.
So, in order to respond to this, you can get
them as a full list in your current ARFrame.
So that'll have all of the anchors that your
session is currently tracking.
Or you can respond to delegate methods like
add, update, and remove, which will notify

English: 
you if anchors were added, updated, or removed
from your session.
So that concludes the four main classes that
you're going to use to create augmented reality
experience.
Now let's talk about tracking in particular.
So, tracking is the ability to determine a
physical location in space in real time.
This isn't easy.
So, but it's essential for augmented reality
to find your device's position.
So not any position, but the position of your
device and the orientation in order to render
things correctly.
So let's take a look at an example.
Here I've placed a virtual chair and a virtual
table in a physical environment.
You'll notice that if I pan around it or reorient
to my device, that they'll stay fixed in space.
But more importantly, as I walk around the
scene they also stay fixed in space.
So this is because we're using, constantly
updating the projection transform, or the

Vietnamese: 
bạn nếu neo đã được thêm, cập nhật hoặc xóa khỏi phiên làm việc của bạn.
Do đó kết luận bốn lớp chính mà bạn sẽ sử dụng để tạo ra thực tế bổ sung
không trải nghiệm.
Bây giờ chúng ta hãy nói về việc theo dõi cụ thể.
Vì vậy, theo dõi là khả năng xác định vị trí thực tế trong không gian theo thời gian thực.
Điều này không dễ.
Vì vậy, nhưng điều thiết yếu cho thực tế bổ sung để tìm vị trí thiết bị của bạn.
Vì vậy, không phải bất kỳ vị trí nào, nhưng vị trí của thiết bị và hướng của bạn để hiển thị
mọi thứ một cách chính xác.
Vì vậy, chúng ta hãy xem một ví dụ.
Ở đây tôi đã đặt một cái ghế ảo và một cái bàn ảo trong một môi trường vật lý.
Bạn sẽ nhận thấy rằng nếu tôi xoay quanh nó hoặc định hướng lại thiết bị của tôi, chúng sẽ cố định trong không gian.
Nhưng quan trọng hơn, khi tôi đi bộ xung quanh hiện trường, chúng cũng ở trong không gian.
Vì vậy, điều này là bởi vì chúng tôi đang sử dụng, liên tục cập nhật các phép biến đổi chiếu, hoặc

Vietnamese: 
chiếu ma trận mà chúng tôi đang sử dụng để hiển thị nội dung ảo này để nó xuất hiện chính xác
từ bất kỳ quan điểm.
Vậy bây giờ làm thế nào để chúng tôi làm điều này?
ARKit cung cấp theo dõi thế giới.
Đây là công nghệ của chúng tôi sử dụng phép đo quán tính quán tính hình ảnh.
Đó là hình ảnh của bạn.
Đó là chuyển động của thiết bị của bạn.
Và nó cung cấp cho bạn một vòng xoay cũng như một vị trí hoặc vị trí tương đối, của bạn
Thiết bị
Nhưng quan trọng hơn, nó cung cấp quy mô thế giới thực.
Vì vậy, tất cả các nội dung ảo của bạn thực sự sẽ được quy mô rendered trong cảnh vật lý của bạn.
Nó cũng có nghĩa là chuyển động của thiết bị tương quan với khoảng cách vật lý được đo bằng
10.136 mét
Và tất cả các vị trí được đưa ra bằng cách theo dõi liên quan đến vị trí bắt đầu của bạn
Phiên
Vì vậy, một chức năng nữa của cách Theo dõi Thế giới hoạt động.
Chúng tôi cung cấp các điểm đặc trưng 3-D.
Vì vậy, đây là một biểu trưng về cách Công cụ Theo dõi Thế giới hoạt động.
Nó hoạt động bằng cách phát hiện các tính năng, đó là những thông tin độc đáo, trong một máy ảnh

English: 
projection matrix that we're using to render
this virtual content so that it appears correct
from any perspective.
So now how do we do this?
ARKit provides world tracking.
This is our technology that uses visual inertial
odometry.
It's your camera images.
It's the motion of your device.
And it provides to you a rotation as well
as a position or relative position, of your
device.
But more importantly, it provides real world
scale.
So all your virtual content is actually going
to be to scale rendered in your physical scene.
It also means that motion of your device correlates
to physical distance traveled measured in
meters.
And all the positions given by tracking are
relative to the starting position of your
session.
So one more function of how World Tracking
works.
We provide 3-D feature points.
So, here's a representation of how World Tracking
works.
It works by detecting features, which are
unique pieces of information, in a camera

English: 
image.
So you'll see the axes represents my device's
position and orientation.
It's creating a path as I move about my world.
But you also see all these dots up here.
These represent 3-D feature points that I've
detected in my scene.
I've been able to triangulate them by moving
about the scene and then using these, matching
these features, you'll see that I draw a line
when I match an existing feature that I've
seen before.
And using all of this information and our
motion data, we're able to precisely provide
a device orientation and location.
So that might look hard.
Let's look at the code on how we run World
Tracking.
First thing you need to do is simply create
an ARSession.
Because again, it's going to manage all of
the processing that's going to happen for
World Tracking.
Next, you'll set yourself as the delegate
of the session so that you can receive updates
on when new frames are available.
By creating a World Tracking session configuration
you're saying, "I want to use World Tracking.
I want my session to run this processing."

Vietnamese: 
Hình ảnh
Vì vậy, bạn sẽ thấy các trục tượng trưng cho vị trí và hướng của thiết bị.
Nó tạo ra một con đường khi tôi di chuyển về thế giới của mình.
Nhưng bạn cũng thấy tất cả các dấu chấm ở đây.
Đây là những điểm đặc trưng 3-D mà tôi đã phát hiện trong cảnh của mình.
Tôi đã có thể triangulate chúng bằng cách di chuyển về cảnh và sau đó sử dụng các, kết hợp
các tính năng này, bạn sẽ thấy rằng tôi vẽ một đường thẳng khi tôi khớp một tính năng hiện có mà tôi đã
Đã từng nhìn thấy trước đây.
Và sử dụng tất cả thông tin này và dữ liệu chuyển động của chúng tôi, chúng tôi có thể cung cấp chính xác
định hướng và vị trí của thiết bị
Vì vậy mà có thể nhìn khó.
Hãy xem xét mã về cách chúng tôi chạy World Tracking.
Điều đầu tiên bạn cần làm chỉ đơn giản là tạo ra một ARSession.
Bởi vì một lần nữa, nó sẽ quản lý tất cả các quá trình xử lý đó sẽ xảy ra cho
Theo dõi thế giới.
Tiếp theo, bạn sẽ tự mình làm đại biểu của phiên làm việc để bạn có thể nhận được cập nhật
bật khi có khung mới.
Bằng cách tạo cấu hình phiên theo dõi World Tracking, bạn đang nói, "Tôi muốn sử dụng Theo dõi Thế giới.
Tôi muốn phiên làm việc của tôi để chạy quá trình này. "

English: 
Then by simply calling Run, immediately processing
will happen.
Capturing will begin.
So, under the hood, our session creates an
AVCaptureSession -- sorry, as well as a CMMotionManager
in order to get image and motion data.
We use the images to detect features in the
scene.
And we use the motion data at a higher rate
in order to integrate it over time to get
your device's motion.
Using these together we're able to use sensor
fusion in order to provide a precise pose.
So these are returned in ARFrames.
Each ARFrame is going to include an ARCamera.
So an ARCamera is the object that represents
a virtual camera.
Or you can use it for a virtual camera.
It represents your device's orientation as
well as location.
So it provides a transform.
Transform is a matrix or a [inaudible] float
4 by 4 which provides the orientation or the
rotation as well as translation of your physical
device from the starting point of the session.

Vietnamese: 
Sau đó bằng cách chỉ cần gọi cho Run, xử lý ngay sẽ xảy ra.
Bắt sẽ bắt đầu.
Vì vậy, dưới mui xe, phiên của chúng tôi tạo ra một AVCaptureSession - xin lỗi, cũng như một CMMotionManager
để có được hình ảnh và chuyển động dữ liệu.
Chúng tôi sử dụng các hình ảnh để phát hiện các tính năng trong hiện trường.
Và chúng tôi sử dụng dữ liệu chuyển động với tỷ lệ cao hơn để tích hợp nó theo thời gian để có được
chuyển động thiết bị của bạn.
Sử dụng chúng với nhau chúng ta có thể sử dụng cảm biến nhiệt hạch để cung cấp một cách chính xác.
Vì vậy, đây là những trở lại trong ARFrames.
Mỗi ARFrame sẽ bao gồm một ARCamera.
Vì vậy, một ARCamera là đối tượng đại diện cho một máy ảnh ảo.
Hoặc bạn có thể sử dụng nó cho một máy ảnh ảo.
Nó đại diện cho định hướng của thiết bị cũng như vị trí của bạn.
Vì vậy, nó cung cấp một sự biến đổi.
Chuyển đổi là một ma trận hoặc một phao [inaudible] 4 by 4 cung cấp hướng hoặc
xoay vòng cũng như bản dịch thiết bị vật lý của bạn từ điểm xuất phát của phiên.

Vietnamese: 
Ngoài ra chúng tôi cung cấp trạng thái theo dõi, thông báo cho bạn về cách bạn có thể sử dụng
sự biến đổi.
Và cuối cùng, chúng tôi cung cấp tính năng nội tại của máy ảnh.
Vì vậy, nội tại của máy ảnh thực sự quan trọng mà chúng tôi nhận được chúng mỗi khung bởi vì nó phù hợp
của máy ảnh vật lý trên thiết bị của bạn.
Thông tin này như độ dài tiêu cự và điểm chính, được sử dụng để tìm một chiếu
tam giác trên
Ma trận chiếu cũng là một phương pháp tiện lợi trên ARCamera.
Vì vậy, bạn có thể dễ dàng sử dụng nó để hiển thị hình học ảo của bạn.
Vì vậy, với đó, đó là theo dõi mà ARKit cung cấp.
Chúng ta hãy tiếp tục xem bản giới thiệu bằng cách sử dụng World Tracking và tạo ra ứng dụng ARKit đầu tiên của bạn.
Vì vậy, điều đầu tiên bạn nhận thấy khi mở Xcode 9 mới là có một mẫu mới
có sẵn để tạo ra các ứng dụng thực tế bổ sung.
Vậy chúng ta hãy tiếp tục và lựa chọn điều đó.
Tôi sẽ tạo ra một ứng dụng bổ sung thực tế.
Nhấn Next.

English: 
In addition to this we provide a tracking
state, which informs you on how you can use
the transform.
And last, we provide camera intrinsics.
So camera intrinsics are really important
that we get them each frame because it matches
that of the physical camera on your device.
This information like focal length and principal
point, which are used to find a projection
matrix.
The projection matrix is also a convenience
method on ARCamera.
So you can easily use that to render your
virtual geometry.
So with that, that is tracking that ARKit
provides.
Let's go ahead and look at a demo using World
Tracking and create your first ARKit application.
So, the first thing that you notice when you
open new Xcode 9 is that there's a new template
available for creating augmented reality apps.
So let's go ahead and select that.
I'm going to create an augmented reality app.
Hit Next.

English: 
After giving my project a name like MyARApp,
I can choose between the language, which here
I have the option between Swift as well as
ObjectiveC as well as the content technology.
So the content technology is what you're going
to use to render your augmented reality scene.
You have the option between SceneKit, SpriteKit
as well as Metal.
I'm going to use SceneKit for this example.
So after hitting Next and creating my workspace,
it looks something like this.
Here I have a view controller that I've created.
You'll see that it has an ARSCNView.
So this ARSCNView is a custom AR subclass
that implements all the rendering -- or most
of the rendering for me.
So it'll handle updating my virtual camera
based on the ARFrames that get returned to
it.
As a property of ARSCNView, or my sceneView,
it has a session.
So you see that my sceneView, I set a scene,
which is going to be a ship that's translated
a little bit in front of the world origin
along the z-axis.

Vietnamese: 
Sau khi đưa ra dự án một tên như MyARApp, tôi có thể chọn giữa ngôn ngữ, ở đây
Tôi có tùy chọn giữa Swift cũng như ObjectiveC cũng như công nghệ nội dung.
Vì vậy, công nghệ nội dung là những gì bạn sẽ sử dụng để làm cảnh gia tăng của bạn.
Bạn có tùy chọn giữa SceneKit, SpriteKit cũng như Metal.
Tôi sẽ sử dụng SceneKit cho ví dụ này.
Vì vậy, sau khi nhấn Tiếp theo và tạo không gian làm việc của tôi, nó trông giống như thế này.
Ở đây tôi có bộ điều khiển chế độ xem mà tôi đã tạo.
Bạn sẽ thấy rằng nó có một ARSCNView.
Vì vậy, ARSCNView này là một phân lớp AR tùy chỉnh thực hiện tất cả các kết xuất - hoặc hầu hết
của rendering cho tôi.
Vì vậy, nó sẽ xử lý cập nhật máy ảnh ảo của tôi dựa trên ARFrames mà được trả lại
các em cần thật sự là điều khó k
Là thuộc tính của ARSCNView hoặc sceneView của tôi, nó có phiên.
Vì vậy, bạn thấy rằng sceneView của tôi, tôi thiết lập một cảnh, đó sẽ là một con tàu đã được dịch
một chút ở phía trước của nguồn gốc thế giới dọc theo trục z.

Vietnamese: 
Và sau đó phần quan trọng nhất là tôi đang truy cập vào phiên - tôi đang truy cập phiên và
gọi Chạy với cấu hình phiên theo dõi World Tracking.
Vì vậy, điều này sẽ chạy theo dõi thế giới.
Và tự động xem sẽ xử lý cập nhật máy ảnh ảo của tôi cho tôi.
Vì vậy, hãy tiếp tục và đưa ra một thử.
Có thể tôi sẽ thay đổi con tàu tiêu chuẩn của chúng tôi để sử dụng tàu khu trục.
Vậy chúng ta hãy chạy nó trên thiết bị.
Vì vậy, sau khi cài đặt, điều đầu tiên bạn sẽ nhận thấy là nó sẽ yêu cầu
cho phép máy ảnh.
Đây là một yêu cầu để sử dụng theo dõi cũng như làm bối cảnh của cảnh của bạn.
Tiếp theo, như bạn thấy, tôi nhận được một nguồn cấp dữ liệu máy ảnh.
Và ngay trước mặt tôi có một tàu vũ trụ.
Bạn sẽ thấy khi tôi thay đổi hướng của thiết bị, nó vẫn cố định trong không gian.
Nhưng quan trọng hơn, khi tôi di chuyển về tàu vũ trụ, bạn sẽ thấy rằng nó thực sự là
neo đậu trong thế giới vật chất.
Vì vậy, điều này đang sử dụng cả định hướng của thiết bị cũng như vị trí tương đối để cập nhật
máy ảnh ảo và nhìn vào tàu vũ trụ.

English: 
And then the most important part is I'm accessing
the session -- I'm accessing the session and
calling Run with a World Tracking session
configuration.
So this will run World Tracking.
And automatically the view will handle updating
my virtual camera for me.
So let's go ahead and give that a try.
Maybe I'm going to change our standard ship
to use arship.
So let's run this on the device.
So after installing, the first thing that
you'll notice is that it's going to ask for
camera permission.
This is a required to use tracking as well
as render the backdrop of your scene.
Next, as you'll see, I get a camera feed.
And right in front of me there's a spaceship.
You'll see as I change the orientation of
my device, it stays fixed in space.
But more importantly, as I move about the
spaceship, you'll see that it actually is
anchored in the physical world.
So this is using both my device's orientation
as well as a relative position to update a
virtual camera and look at the spaceship.

English: 
Thank you.
So, if 
that's not interesting enough for you, maybe
we want to add something to the scene every
time we tap the screen.
Let's try that out.
Let's try adding something to this example.
So as I said, I want to add geometry to the
scene every time I tap the screen.
First thing I need to do to do that is add
a tap gesture recognizer.
So after adding that to my scene view, every
time I call the handle tap method, or every
time I tap the screen, the handle tap method
will get called.
So let's implement that.
So, if I want to create some geometry, let's
say I'm going to create a plane or an image
plane.
So the first thing I do here is create an
SCNPlane with a width and height.
But then, the tricky part, I'm actually going
to set the contents -- or the material, to
be a snapshot of my view.

Vietnamese: 
Cảm ơn
Vì vậy, nếu đó không đủ thú vị cho bạn, có thể
chúng tôi muốn thêm một cái gì đó vào hiện trường mỗi khi chúng tôi chạm vào màn hình.
Hãy thử điều đó ra.
Hãy thử thêm một cái gì đó vào ví dụ này.
Vì vậy, như tôi đã nói, tôi muốn thêm hình học vào cảnh mỗi khi tôi gõ màn hình.
Điều đầu tiên tôi cần phải làm để làm điều đó là thêm một bộ nhận diện cử chỉ.
Vì vậy, sau khi thêm vào khung nhìn cảnh của tôi, mỗi lần tôi gọi phương pháp xử lý vòi nước, hoặc mọi
thời gian tôi tap màn hình, phương pháp xử lý vòi sẽ được gọi.
Vì vậy, hãy thực hiện điều đó.
Vì vậy, nếu tôi muốn tạo ra một số hình học, giả sử tôi sẽ tạo ra một mặt phẳng hoặc hình ảnh
máy bay.
Vì vậy, điều đầu tiên tôi làm ở đây là tạo ra một SCNPlane với chiều rộng và chiều rộng.
Nhưng sau đó, phần khó khăn, tôi thực sự sẽ thiết lập các nội dung - hoặc vật liệu, để
hãy là một cái nhìn nhanh về quan điểm của tôi.

Vietnamese: 
Vậy bạn nghĩ điều này sẽ là gì?
Vâng, điều này thực sự sẽ chụp nhanh hoặc vẽ lại chế độ xem của tôi, bao gồm cả phông nền
hình ảnh máy ảnh cũng như hình học ảo mà tôi đã đặt ở phía trước của nó.
Tôi đang thiết lập mô hình ánh sáng của tôi để không đổi để ước tính ánh sáng được cung cấp bởi ARKit
không được áp dụng cho hình ảnh camera này bởi vì nó đã phù hợp với môi trường.
Tiếp theo, tôi cần phải thêm vào cảnh này.
Vì vậy, để làm điều đó, tôi sẽ tạo ra một nút máy bay.
Vì vậy, sau khi tạo một SCNode đóng gói hình học này, tôi thêm nó vào hiện trường.
Vì vậy, đã có ở đây, mỗi khi tôi nhấn vào màn hình, nó sẽ thêm một máy bay hình ảnh vào cảnh của tôi.
Nhưng vấn đề là nó sẽ luôn ở mức 000.
Vậy làm cách nào để tôi làm điều này thú vị hơn?
Vâng, chúng tôi đã cung cấp cho chúng tôi một khung hình hiện tại, trong đó có một Camera AR.
Tôi có thể có thể sử dụng biến đổi của máy ảnh để cập nhật biến đổi nút máy bay
do đó nút máy bay là nơi mà máy ảnh của tôi hiện đang nằm trong không gian.

English: 
So what do you think this is going to be?
Well, this actually going to take a snapshot
or a rendering of my view including the backdrop
camera image as well as the virtual geometry
that I've placed in front of it.
I'm setting my lighting model to constant
so that the light estimate provided by ARKit
doesn't get applied to this camera image because
it's already going to match the environment.
Next, I need to add this to the scene.
So in order to do that, I'm going to create
a plane node.
So, after creating an SCNode that encapsulates
this geometry, I add it to the scene.
So already here, every time I tap the screen,
it's going to add an image plane to my scene.
But the problem is it's always going to be
at 000.
So how do I make this more interesting?
Well, we have provided to us a current frame,
which contains an AR Camera.
Which I could probably use the camera's transform
in order to update the plane node's transform
so that the plane node is where my camera
currently is located in space.

English: 
To do that, I'm going to first get the current
frame from my SceneView session.
Next, I'm going to update the plane node's
transform in order to use the transform of
my camera.
So here you'll notice the first thing I do
I actually create the translation matrix.
Because I don't want to put the image plane
right where the camera's located and obstruct
my view, I want to place it in front of the
camera.
So for this I'm going to use the negative
z-axis as a translation.
You'll also see that in order to get some
scale, everything is in meters.
So I'm going to use .1 to represent 10 centimeters
in front of my camera.
By multiplying this together with my camera's
transform and applying this to my plane node,
this will be an image plane located 10 centimeters
in front of the camera.
So let's try this out and see what it looks
like.

Vietnamese: 
Để làm điều đó, trước tiên tôi sẽ lấy khung hiện tại từ phiên SceneView của tôi.
Tiếp theo, tôi sẽ cập nhật biến đổi nút máy bay để sử dụng biến đổi
máy ảnh của tôi.
Vì vậy, ở đây bạn sẽ nhận thấy điều đầu tiên tôi làm tôi thực sự tạo ra ma trận dịch.
Bởi vì tôi không muốn đặt máy bay hình ảnh ngay nơi mà máy ảnh nằm và cản trở
quan điểm của tôi, tôi muốn đặt nó ở phía trước của máy ảnh.
Vì vậy, đối với điều này tôi sẽ sử dụng trục z tiêu cực như là một bản dịch.
Bạn cũng sẽ thấy rằng để có được một quy mô, mọi thứ đều bằng mét.
Vì vậy, tôi sẽ sử dụng 0,1 để đại diện cho 10 cm trước máy ảnh của tôi.
Bằng cách nhân này cùng với chuyển đổi của máy ảnh của tôi và áp dụng điều này để nút máy bay của tôi,
đây sẽ là một mặt phẳng hình ảnh nằm cách mặt trước của máy ảnh 10 cm.
Vì vậy, hãy thử này và xem nó như thế nào.

English: 
So, as you see here again, I have the camera
scene running.
And I have my spaceship floating in space.
Now, if I tap the screen maybe here, here
and here, you'll see that it leaves a snapshot
or an image floating in space where I took
it.
This shows just one of the possibilities that
you can use ARKit for.
And it really makes for a cool experience.
Thank you.
And that's using ARKit.
So, now that you've seen a demo using ARKit's
tracking, let's talk about getting the best
quality from your tracking results.
First thing to note is that tracking relies
on uninterrupted sensor data.
This just means if camera images are no longer
being provided to your session, tracking will
stop.

Vietnamese: 
Vì vậy, như bạn thấy ở đây một lần nữa, tôi có cảnh máy quay đang chạy.
Và tôi có không gian vũ trụ của tôi trôi nổi trong không gian.
Bây giờ, nếu tôi nhấn vào màn hình có thể ở đây, ở đây và ở đây, bạn sẽ thấy rằng nó để lại một ảnh chụp nhanh
hay một hình ảnh trôi nổi trong không gian nơi mà tôi chụp.
Điều này chỉ cho thấy một trong những khả năng mà bạn có thể sử dụng ARKit cho.
Và nó thực sự làm cho một trải nghiệm mát mẻ.
Cảm ơn
Và đó là sử dụng ARKit.
Vì vậy, bây giờ bạn đã nhìn thấy bản giới thiệu bằng cách sử dụng theo dõi của ARKit, chúng ta hãy nói về việc làm tốt nhất
chất lượng từ kết quả theo dõi của bạn.
Điều đầu tiên cần lưu ý là theo dõi dựa vào dữ liệu cảm biến không bị gián đoạn.
Điều này chỉ có nghĩa là nếu hình ảnh của máy ảnh không còn được cung cấp cho phiên làm việc của bạn thì việc theo dõi sẽ
- Dừng lại!

English: 
We'll be unable to track.
Next, tracking works best in well-textured
environments.
This means we need enough visual complexity
in order to find features from your camera
images.
So if I'm facing a white wall or if there's
not enough light in the room, I will be unable
to find features.
And tracking will be limited.
Next, tracking also works best in static scenes.
So if too much of what my camera sees is moving,
visual data won't correspond to motion data,
which may result in drift, which is also a
limited tracking state.
So to help with these, ARCamera provides a
tracking state property.
Tracking state has three possible values:
Not Available, Normal, and Limited.
When you first start your session, it begins
in Not Available.
This just means that your camera's transform
has not yet been populated and is the identity
matrix.
Soon after, once we find our first tracking
pose, the state will change from Not Available
to Normal.

Vietnamese: 
Chúng tôi sẽ không thể theo dõi.
Tiếp theo, theo dõi hoạt động tốt nhất trong môi trường văn bản tốt.
Điều này có nghĩa là chúng ta cần độ phức tạp hình ảnh đủ để tìm các tính năng từ máy ảnh của bạn
Hình ảnh
Vì vậy, nếu tôi phải đối mặt với một bức tường trắng hoặc nếu không có đủ ánh sáng trong phòng, tôi sẽ không thể
để tìm các tính năng.
Và việc theo dõi sẽ bị hạn chế.
Tiếp theo, theo dõi cũng hoạt động tốt nhất trong các cảnh tĩnh.
Vì vậy, nếu quá nhiều thứ mà máy ảnh của tôi thấy đang chuyển động, dữ liệu hình ảnh sẽ không tương ứng với dữ liệu chuyển động,
có thể dẫn đến trôi dạt, cũng là một trạng thái theo dõi giới hạn.
Vì vậy, để giúp đỡ những điều này, ARCamera cung cấp một tài sản nhà nước theo dõi.
Trạng thái theo dõi có ba giá trị có thể: Không khả dụng, bình thường và giới hạn.
Khi bạn bắt đầu phiên làm việc đầu tiên, nó bắt đầu trong Không có sẵn.
Điều này chỉ có nghĩa là biến đổi máy ảnh của bạn chưa được phổ biến và là nhận dạng
tam giác trên
Ngay sau đó, khi chúng tôi tìm thấy vị trí theo dõi đầu tiên của chúng tôi, tiểu bang sẽ thay đổi từ Không khả dụng
đến Bình thường.

English: 
This signifies that you can now use your camera's
transform.
If at any later point after this tracing becomes
limited, tracking state will change from Normal
to Limited, and also provide a reason.
So, the reason in this case, because I'm facing
a white wall or there's not enough light,
is Insufficient Features.
It's helpful to notify your users when this
happens.
So, to do that, we're providing a session
delegate method that you can implement: cameraDidChangeTrackingState.
So when this happens, you can get the tracking
state, if it's limited, as well as the reason.
And from this you'll notify your users.
Because they're the only ones that can actually
fix the tracking situation by either turning
the lights up or not facing a white wall.
The other part is if sensor data becomes unavailable.
So, for this, we handle this by session interruptions.
So, if your camera input is unavailable due
to -- the main reasons being your app gets

Vietnamese: 
Điều này cho thấy bạn có thể sử dụng biến đổi của máy ảnh.
Nếu tại bất kỳ điểm nào sau đó sau khi lần theo dõi này trở nên hạn chế, trạng thái theo dõi sẽ thay đổi từ Bình thường
để hạn chế, và cũng cung cấp một lý do.
Vì vậy, lý do trong trường hợp này, bởi vì tôi đang phải đối mặt với một bức tường trắng hoặc không có đủ ánh sáng,
là tính năng không đủ.
Thật hữu ích để thông báo cho người dùng khi điều này xảy ra.
Vì vậy, để làm điều đó, chúng tôi đang cung cấp phương thức ủy nhiệm phiên bạn có thể thực hiện: cameraDidChangeTrackingState.
Vì vậy, khi điều này xảy ra, bạn có thể có được trạng thái theo dõi, nếu nó còn hạn chế, cũng như lý do.
Và từ đó, bạn sẽ thông báo cho người dùng.
Bởi vì chúng là những người duy nhất có thể thực sự khắc phục tình huống theo dõi bằng cách biến
ánh sáng lên hoặc không phải đối mặt với một bức tường trắng.
Phần còn lại là nếu dữ liệu cảm biến trở nên không khả dụng.
Vì vậy, đối với điều này, chúng tôi xử lý điều này bằng cách gián đoạn phiên.
Vì vậy, nếu đầu vào máy ảnh của bạn không khả dụng do - những lý do chính là ứng dụng của bạn được

Vietnamese: 
nền hoặc có thể bạn đang làm đa nhiệm trên một iPad, hình ảnh camera cũng sẽ không được cung cấp
đến phiên của bạn.
Trong trường hợp này tính năng theo dõi sẽ trở nên không hoạt động hoặc bị dừng lại và phiên của bạn sẽ bị gián đoạn.
Vì vậy, để giải quyết vấn đề này, chúng tôi cũng cung cấp các phương pháp ủy thác để làm cho nó thực sự dễ dàng.
Ở đây, bạn nên trình bày lớp phủ hoặc có thể làm mờ màn hình để biểu thị
người dùng rằng trải nghiệm của bạn hiện đang bị tạm dừng và không có theo dõi nào đang xảy ra.
Trong thời gian gián đoạn, điều quan trọng cần lưu ý là vì không có theo dõi nào đang xảy ra,
vị trí tương đối của thiết bị sẽ không có sẵn.
Vì vậy, nếu bạn có neo hoặc vị trí thực tế trong hiện trường, chúng có thể không còn liên kết
nếu có sự chuyển động trong thời gian gián đoạn này.
Vì vậy, cho điều này, bạn có thể muốn bắt đầu lại kinh nghiệm của mình khi bạn trở lại từ một
gián đoạn.
Và đó là theo dõi.
Chúng ta hãy tiếp tục và đưa nó cho Stefan để nói về sự hiểu biết của cảnh.
Cảm ơn
Cảm ơn bạn, Mike.

English: 
backgrounded or maybe you're doing multitasking
on an iPad, camera images also won't be provided
to your session.
In this case tracking will become unavailable
or stopped and your session will be interrupted.
So, to deal with this, we also provide delegate
methods to make it really easy.
Here it's a good idea to present an overlay
or maybe blur your screen to signify to the
user that your experience is currently paused
and no tracking is occurring.
During an interruption, it's also important
to note that because no tracking is happening,
the relative position of your device won't
be available.
So if you had anchors or physical locations
in the scene, they may no longer be aligned
if there was movement during this interruption.
So for this, you may want to optionally restart
your experience when you come back from an
interruption.
And so that's tracking.
Let's go ahead and hand it over to Stefan
to talk about scene understanding.
Thank you.
Thank you, Mike.

Vietnamese: 
Chào tất cả mọi người.
Tôi tên là Stefan Misslinger.
Tôi là một kỹ sư của đội ARKit.
Và tiếp theo chúng ta sẽ nói về sự hiểu biết cảnh.
Vì vậy, mục tiêu của sự hiểu biết cảnh là tìm hiểu thêm về môi trường của chúng ta để
đặt các đối tượng ảo vào môi trường này.
Điều này bao gồm thông tin như topo 3-D của môi trường của chúng tôi cũng như ánh sáng
tình huống để thực tế đặt một vật ở đó.
Hãy xem ví dụ về bảng này ở đây.
Nếu bạn muốn đặt một đối tượng, một đối tượng ảo, vào bảng này, điều đầu tiên chúng ta
cần phải biết rằng có một bề mặt mà chúng ta có thể đặt một cái gì đó.
Và điều này được thực hiện bằng cách sử dụng máy bay phát hiện.
Thứ hai, chúng ta cần phải tìm ra một tọa độ 3-D trên đó chúng ta đặt đối tượng ảo của chúng ta.
Để tìm thấy điều này chúng tôi đang sử dụng thử nghiệm trúng.
Việc này bao gồm việc gửi tia từ thiết bị của chúng tôi và giao cắt nó với thế giới thực trong
để tìm phối hợp này.

English: 
Good afternoon everyone.
My name is Stefan Misslinger.
I'm an engineer on the ARKit team.
And next we're going to talk about scene understanding.
So the goal of scene understanding is to find
out more about our environment in order to
place virtual objects into this environment.
This includes information like the 3-D topology
of our environment as well as the lighting
situation in order to realistically place
an object there.
Let's look at an example of this table here.
If you want to place an object, a virtual
object, onto this table, the first thing we
need to know is that there is a surface on
which we can place something.
And this is done by using plane detection.
Second, we need to figure out a 3-D coordinate
on which we place our virtual object.
In order to find this we are using hit-testing.
This involves sending a ray from our device
and intersecting it with the real world in
order to find this coordinate.

Vietnamese: 
Và thứ ba, để đặt đối tượng này một cách thực tế, chúng ta cần một ước lượng nhẹ
để phù hợp với ánh sáng của môi trường của chúng tôi.
Chúng ta hãy nhìn vào một trong ba điều đó bắt đầu bằng việc phát hiện máy bay.
Vì vậy, việc phát hiện máy bay cung cấp cho bạn các mặt phẳng ngang đối với trọng lực.
Điều này bao gồm máy bay giống như máy bay mặt đất cũng như bất kỳ máy bay song song như bảng.
ARKit thực hiện điều này bằng cách tổng hợp thông tin qua nhiều khung để nó chạy dưới nền.
Và khi người dùng di chuyển thiết bị của họ xung quanh hiện trường, nó sẽ học được nhiều hơn về máy bay này.
Điều này cũng cho phép chúng ta lấy được một mức độ liên kết của mặt phẳng này, có nghĩa là chúng ta
lắp một hình chữ nhật quanh tất cả các phần đã được phát hiện của máy bay này và căn chỉnh nó với phần chính
Mức độ quan trong gì không
Vì vậy, điều này cho bạn một ý tưởng về định hướng chính của một mặt phẳng vật lý.

English: 
And third, in order to place this object in
a realistic way we need a light estimation
to match the lighting of our environment.
Let's have a look at each one of those three
things starting with plane detection.
So, plane detection provides you with horizontal
planes with respect to gravity.
This includes planes like the ground plane
as well as any parallel planes like tables.
ARKit does this by aggregating information
over multiple frames so it runs in the background.
And as the user moves their device around
the scene, it learns more about this plane.
This also allows us to retrieve an aligned
extent of this plane, which means that we're
fitting a rectangle around all detected parts
of this plane and align it with the major
extent.
So this gives you an idea of the major orientation
of a physical plane.

Vietnamese: 
Hơn nữa, nếu có nhiều máy bay ảo được phát hiện cho cùng một mặt phẳng vật lý,
ARKit sẽ xử lý việc hợp nhất chúng lại với nhau.
Sau đó, máy bay kết hợp sẽ phát triển đến mức của cả hai máy bay, do đó máy bay mới sẽ
được gỡ bỏ khỏi phiên.
Chúng ta hãy cùng xem nó được sử dụng như thế nào trong đoạn code.
Điều đầu tiên bạn muốn làm là tạo cấu hình phiên ARWorldTracking.
Và việc phát hiện máy bay là một thuộc tính bạn có thể thiết lập trên cấu hình phiên ARWorldTracking.
Vì vậy, để kích hoạt tính năng phát hiện máy bay, bạn đơn giản thiết lập thuộc tính Phát hiện Máy bay sang Ngang.
Sau đó, bạn vượt qua cấu hình trở lại ARSession bằng cách gọi phương thức Run.
Và nó sẽ bắt đầu phát hiện máy bay trong môi trường của bạn.
Nếu bạn muốn tắt phát hiện máy bay, chúng tôi chỉ cần đặt thuộc tính phát hiện máy bay
Không.
Và sau đó gọi lại phương pháp Run trên ARSession một lần nữa.

English: 
Furthermore, if there are multiple virtual
planes detected for the same physical plane,
ARKit will handle merging those together.
Then the combined plane will grow to the extent
of both planes, hence the newer plane will
be removed from the session.
Let's have a look at how it's used as in code.
The first thing you want to do is create an
ARWorldTracking session configuration.
And plane detection is a property you can
set on an ARWorldTracking session configuration.
So, to enable plane detection, you simple
set the plane detection property to Horizontal.
After that, you pass the configuration back
to the ARSession by calling the Run method.
And it will start detecting planes in your
environment.
If you want to turn off plane detection, we
simply set the plane detection property to
None.
And then call the Run method on ARSession
again.

English: 
Any previously detected planes in the session
will remain.
That means they will be still present in our
ARFrames anchors.
So whenever a new plane has been detected,
they will be surfaced to you as ARPlaneAnchors.
An ARPlaneAnchor is a subclass of an ARAnchor,
which means it represents a real-world position
and orientation.
Whenever a new anchor is being detected you
will receive a delegate call session didAdd
anchor.
And you can use that, for example, to visualize
your plane.
The extent of the plane will be surfaced to
you as the extent, which is in respect to
a center property.
So as the user moves the device around the
scene, we'll learn more about this plane and
can update its extent.
When this happens you will receive a delegate
session didUpdate frame -- or didUpdate anchor.

Vietnamese: 
Bất kỳ máy bay nào đã phát hiện trước đây trong phiên sẽ vẫn còn.
Điều đó có nghĩa là chúng sẽ vẫn còn trong các ARFrames của chúng ta.
Vì vậy, bất cứ khi nào một máy bay mới đã được phát hiện, họ sẽ được nổi lên với bạn như ARPlaneAnchors.
Một ARPlaneAnchor là một phân lớp của một ARAnchor, có nghĩa là nó đại diện cho một vị trí thực tế
và định hướng.
Bất cứ khi nào một anchor mới được phát hiện, bạn sẽ nhận được một phiên làm việc ủy ​​thác didAdd
Anchor
Và bạn có thể sử dụng nó, ví dụ, để hình dung máy bay của bạn.
Mức độ của máy bay sẽ được hiển thị cho bạn như mức độ, đó là đối với
một trung tâm tài sản.
Vì vậy khi người dùng di chuyển thiết bị xung quanh hiện trường, chúng tôi sẽ tìm hiểu thêm về máy bay này và
có thể cập nhật mức độ của nó.
Khi điều này xảy ra, bạn sẽ nhận được một phiên làm việc ủy ​​thác didUpdate khung - hoặc didUpdate neo.

English: 
And you can use that to update your visualization.
Notice how the center property actually moved
because the plane grew more into one direction
than another.
Whenever an anchor is being removed from the
session, you will receive a delegate called
session didRemove anchor.
This can happen if ARKits merges planes together
and removes one of them as a result.
In that case, you will receive a delegate
call session didRemove anchor, and you can
update your visualization accordingly.
So now that we have an idea of where there
are planes in our environment, let's have
a look at how to actually place something
into this.
And for this we provide hit-testing.
So hit-testing involves sending or intersecting
a ray originating from your device with the
real world and finding the intersection point.

Vietnamese: 
Và bạn có thể sử dụng nó để cập nhật hình dung của bạn.
Chú ý tài sản trung tâm thực sự di chuyển như thế nào bởi vì máy bay đã phát triển thành một hướng
hơn người khác.
Bất cứ khi nào một anchor đang được gỡ bỏ khỏi session, bạn sẽ nhận được một delegate được gọi là
phiên làmRemove anchor.
Điều này có thể xảy ra nếu ARKits kết hợp các máy bay với nhau và loại bỏ một trong số chúng như vậy.
Trong trường hợp đó, bạn sẽ nhận được một cuộc gọi cuộc gọi ủy nhiệm didRemove anchor, và bạn có thể
cập nhật hình ảnh của bạn cho phù hợp.
Vì vậy, bây giờ chúng ta có một ý tưởng về nơi có những chiếc máy bay trong môi trường của chúng ta, hãy
một cái nhìn làm thế nào để thực sự đặt một cái gì đó vào điều này.
Và vì điều này, chúng tôi cung cấp thử nghiệm thành công.
Vì vậy, kiểm tra nhấn bao gồm việc gửi hoặc giao cắt một tia có nguồn gốc từ thiết bị của bạn với
thế giới thực và tìm ra điểm giao lộ.

English: 
ARKit uses all the scene information available,
which includes any detected planes as well
as the 3-D feature points that ARWorldTracking
is using to figure out its position.
ARKit will then intersect our ray with all
information that is available and return all
intersection points as an array which is sorted
by distance.
So the first entry in this array will be the
closest intersection to the camera.
And there are different ways on how you can
perform this intersection.
And you can define this by providing a hit-test
type.
So there are four ways on how to do this.
Let's have a look.
If you are running plane detection and ARKit
has detected a plane in our environment, we
can make use of that.
And here you have the choice of using the
extent of the plane or ignoring it.

Vietnamese: 
ARKit sử dụng tất cả các thông tin cảnh sẵn có, bao gồm bất kỳ máy bay nào cũng được phát hiện
như các điểm đặc trưng 3 chiều mà ARWorldTracking đang sử dụng để tìm ra vị trí của nó.
ARKit sau đó sẽ giao cắt ray của chúng tôi với tất cả các thông tin có sẵn và trả lại tất cả
giao điểm như một mảng được sắp xếp theo khoảng cách.
Vì vậy mục nhập đầu tiên trong mảng này sẽ là giao điểm gần nhất với máy ảnh.
Và có nhiều cách khác nhau về cách bạn có thể thực hiện giao điểm này.
Và bạn có thể xác định điều này bằng cách cung cấp một loại kiểm tra truy cập.
Vì vậy, có bốn cách để làm điều này.
Chúng ta hãy có một cái nhìn.
Nếu bạn đang chạy phát hiện máy bay và ARKit đã phát hiện ra một máy bay trong môi trường của chúng tôi, chúng tôi
có thể sử dụng điều đó.
Và ở đây bạn có lựa chọn sử dụng mức độ của mặt phẳng hoặc bỏ qua nó.

Vietnamese: 
Vì vậy, nếu bạn muốn người dùng của bạn có thể di chuyển một đối tượng trên máy bay, bạn có thể
trong phạm vi đó, có nghĩa là nếu một tia cắt nhau trong phạm vi của nó, nó
sẽ cung cấp cho bạn một giao lộ.
Nếu tia phát ra bên ngoài, nó sẽ không cho bạn một giao lộ.
Trong trường hợp, ví dụ, di chuyển đồ nội thất xung quanh, hoặc khi bạn chỉ phát hiện một nhỏ
một phần của mặt phẳng mặt đất, chúng ta có thể chọn để bỏ qua mức độ này và xử lý một mặt phẳng hiện có
như máy bay vô hạn.
Trong trường hợp đó bạn sẽ luôn nhận được một giao lộ.
Và bạn chỉ có thể sử dụng một miếng vá của thế giới thực, nhưng để cho người dùng của bạn di chuyển một đối tượng dọc theo
máy bay.
Nếu bạn không chạy phát hiện máy bay hoặc chúng tôi chưa phát hiện bất kỳ chiếc máy bay nào, chúng tôi cũng có thể
ước tính một chiếc máy bay dựa trên các điểm tính năng 3-D mà chúng tôi có sẵn.

English: 
So if you want your user to be able to move
an object just on a plane, you can take the
extent into account, which will mean that
if a ray intersects within its extent, it
will provide you with an intersection.
If the ray hits outside of this, it will not
give you an intersection.
In the case of, for example, moving furniture
around, or when you only have detected a small
part of the ground plane, we can choose to
ignore this extent and treat an existing plane
as infinite plane.
In that case you will always receive an intersection.
And you can just use a patch of the real world,
but let your users move an object along this
plane.
If you're not running plane detection or we
have not detected any planes yet, we can also
estimate a plane based on the 3-D feature
points that we have available.

Vietnamese: 
Trong trường hợp đó, ARKit sẽ tìm các điểm coplanar trong môi trường của chúng ta và phù hợp với một mặt phẳng
vào đó.
Và sau đó nó sẽ trả lại cho bạn với giao điểm của máy bay này.
Trong trường hợp bạn muốn đặt một cái gì đó lên một bề mặt rất nhỏ, không tạo thành một mặt phẳng,
hoặc bạn có một môi trường rất bất thường, bạn cũng có thể chọn giao cắt với
tính điểm trực tiếp.
Điều này có nghĩa là chúng ta sẽ tìm thấy một giao lộ dọc theo tia của chúng ta, gần nhất với một
tính năng điểm, và trả lại kết quả này.
Chúng ta hãy cùng xem xét cách thức này được thực hiện bằng mã nguồn.
Vì vậy, điều đầu tiên chúng ta cần làm là xác định tia sáng của chúng ta.
Và nó giao nhau trên thiết bị của chúng tôi.
Bạn cung cấp điều này như là một điểm CG, được đại diện trong tọa độ không gian hình bình thường.
Điều này có nghĩa phía trên bên trái của hình ảnh của chúng ta là 0, 0, trong khi phía dưới bên phải là 1, 1.

English: 
In that case, ARKit will look for coplanar
points in our environment and fit a plane
into that.
And after that it will return you with the
intersection of this plane.
In case you want to place something on a very
small surface, which does not form a plane,
or you have a very irregular environment,
you can also choose to intersect with the
feature points directly.
This means that we will find an intersection
along our ray, which is closest to an existing
feature point, and return this as the result.
Let's have a look at how this is done in code.
So the first thing we need to do is define
our ray.
And it intersects on our device.
You provide this as a CG point, which is represented
in normalized image space coordinates.
This means the top left of our image is 0,
0, whereas the bottom right is 1, 1.

Vietnamese: 
Vì vậy, nếu chúng ta muốn gửi một ray hoặc tìm một giao lộ ở giữa màn hình của chúng tôi, chúng tôi sẽ xác định
như điểm CG với 0,5 cho x và y.
Nếu bạn đang sử dụng SceneKit hoặc SpriteKit, chúng tôi đang cung cấp lớp phủ tùy chỉnh mà bạn có thể đơn giản
vượt qua một điểm CG trong một vài tọa độ.
Vì vậy, bạn có thể sử dụng kết quả của một giao diện người dùng chạm vào cử chỉ cảm ứng như đầu vào để xác định tia này.
Vì vậy, chúng ta hãy chuyển điểm này lên phương pháp kiểm tra trúng đích và xác định các kiểu kiểm tra trúng
chúng tôi muốn sử dụng.
Trong trường hợp này, chúng tôi đang sử dụng các máy bay xuất cảnh, có nghĩa là nó sẽ giao cắt với bất kỳ máy bay hiện có
máy bay mà ARKit đã phát hiện, cũng như máy bay ngang ước tính.
Vì vậy, điều này có thể được sử dụng như một trường hợp dự phòng trong trường hợp không có máy bay nào được phát hiện.
Sau đó, ARKit sẽ trả về một loạt các kết quả.

English: 
So if we want to send a ray or find an intersection
in the center of our screen, we would define
as CG points with 0.5 for x and y.
If you're using SceneKit or SpriteKit, we're
providing a custom overlay that you can simply
pass a CG point in a few coordinates.
So you can use the result of a UI tap over
touch gesture as inputs to define this ray.
So let's pass this point onto the hit-test
method and define the hit-test types that
we want to use.
In this case we're using exiting planes, which
means it will intersect with any existing
planes that ARKit has already detected, as
well as estimated horizontal planes.
So this can be used as a fallback case in
case there are no planes detected yet.
After that, ARKit will return an array of
results.

English: 
And you can access the first result, which
will be the closest intersection to your camera.
The intersection points is contained in the
worldTransform property of our hit-test result.
And we can create a new ARAnchor based on
this result and pass it back to the session
because we want to keep track of it.
So if we take this code and would apply it
to the scene here where we point our phone
at a table, it would return us the intersection
points on this table in the center of the
screen.
And we can place a virtual cup at this location.
By default, your rendering engine will assume
that your background image is perfectly lit.
So your augmentation looks like it really
belongs there.
However, if you're in a darker environment,
then your camera image is darker, and it means
that your augmentation will look out of place
and it appears to glow.

Vietnamese: 
Và bạn có thể truy cập kết quả đầu tiên, đây sẽ là giao điểm gần nhất với máy ảnh của bạn.
Các điểm giao nhau được chứa trong tài sản worldTransform của kết quả kiểm tra hit của chúng tôi.
Và chúng ta có thể tạo một ARAnchor mới dựa trên kết quả này và chuyển nó trở lại phiên
bởi vì chúng tôi muốn theo dõi nó.
Vì vậy, nếu chúng ta lấy mã này và sẽ áp dụng nó vào cảnh ở đây, nơi chúng tôi hướng điện thoại của chúng tôi
tại một bàn, nó sẽ trả lại cho chúng tôi các điểm giao trên bàn này ở trung tâm của
Màn hình
Và chúng tôi có thể đặt một cốc ảo tại vị trí này.
Theo mặc định, công cụ kết xuất của bạn sẽ cho rằng hình nền của bạn đã được thắp sáng hoàn toàn.
Vì vậy, tăng cường của bạn trông giống như nó thực sự thuộc về đó.
Tuy nhiên, nếu bạn ở trong một môi trường tối hơn, hình ảnh máy ảnh của bạn sẽ tối hơn và có nghĩa là
rằng sự gia tăng của bạn sẽ nhìn ra ngoài vị trí và nó có vẻ sáng.

Vietnamese: 
Để khắc phục điều này, chúng ta cần điều chỉnh độ sáng tương đối của đối tượng ảo của chúng ta.
Và cho điều này, chúng tôi đang cung cấp ước lượng nhẹ.
Vì vậy, ánh sáng ước tính hoạt động trên hình ảnh của máy ảnh của chúng tôi.
Và nó sử dụng thông tin tiếp xúc để xác định độ sáng tương đối của nó.
Đối với hình ảnh được chiếu sáng, giá trị này mặc định là 1000 lumen.
Đối với một môi trường tươi sáng, bạn sẽ có được một giá trị cao hơn.
Đối với môi trường tối hơn, giá trị thấp hơn.
Bạn cũng có thể chỉ định giá trị này trực tiếp với ánh sáng SEN như thuộc tính cường độ xung quanh.
Do đó, nếu bạn đang sử dụng ánh sáng trên cơ thể, nó sẽ tự động lợi dụng điều này.
Ước lượng ánh sáng được bật theo mặc định.
Và bạn có thể cấu hình bằng cách thiết lập thuộc tính isLightEstimationEnabled trên một ARSession
Cấu hình
Kết quả ước lượng ánh sáng được cung cấp cho bạn trong thuộc tính Ước tính Thấp trên

English: 
In order to fix this, we need to adjust the
relative brightness of our virtual object.
And for this, we are providing light estimation.
So light estimation operates on our camera
image.
And it uses its exposure information to determine
the relative brightness of it.
For a well-lit image, this defaults to 1000
lumen.
For a brighter environment, you will get a
higher value.
For a darker environment, a lower value.
You can also assign this value directly to
an SEN light as its ambient intensity property.
Hence, if you're using physically-based lighting,
it will automatically take advantage of this.
Light estimation is enabled by default.
And you can configure this by setting the
isLightEstimationEnabled property on an ARSession
configuration.
The results of light estimation are provided
to you in the Light Estimate property on the

Vietnamese: 
ARFrame là giá trị cường độ xung quanh.
Vì vậy, với điều đó, chúng ta hãy nhảy vào một bản giới thiệu và xem cách chúng ta đang sử dụng sự hiểu biết cảnh với ARKit.
Vì vậy, ứng dụng mà tôi sẽ cho bạn thấy là ứng dụng mẫu ARKit.
Có nghĩa là bạn cũng có thể tải xuống từ trang web của nhà phát triển của chúng tôi.
Nó được sử dụng để đặt vật thể vào môi trường của chúng ta.
Và nó sử dụng sự hiểu biết cảnh để làm điều đó.
Vì vậy, hãy mang nó ngay tại đây.
Và nếu tôi di chuyển nó xung quanh đây, những gì bạn nhìn thấy ở phía trước của tôi là quảng trường tập trung của chúng tôi.
Và chúng tôi đang đặt nó bằng cách thực hiện kiểm tra hit ở trung tâm của cảnh của chúng tôi và tìm kiếm trên
đặt vật thể tại điểm giao cắt của nó.

English: 
ARFrame as its ambient intensity value.
So with that, let's dive into a demo and look
how we're using scene understanding with ARKit.
So the application that I'm going to show
you is the ARKit Sample application.
Which means you can also download it from
our developer website.
It's used to place objects into our environment.
And it's using scene understanding in order
to do that.
So, let's bring it right up here.
And if I move it around here, what you see
in front of me is our focus square.
And we're placing this by doing hit-testing
in the center of our scene and finding on
placing the object at its intersection point.

Vietnamese: 
Vì vậy, nếu tôi di chuyển nó dọc theo bảng của chúng tôi, bạn thấy nó về cơ bản trình bày dọc theo bảng này.
Nó cũng sử dụng máy bay phát hiện song song.
Và chúng ta có thể hình dung ra điều này để xem những gì đang xảy ra.
Vì vậy, hãy mang trình đơn Gỡ lỗi của chúng tôi ở đây và kích hoạt tùy chọn thứ hai ở đây, đó là
Gỡ lỗi Hình ảnh.
Hãy đóng nó.
Và những gì bạn thấy ở đây là máy bay mà nó đã phát hiện.
Để cung cấp cho bạn một ý tưởng tốt hơn, hãy khởi động lại điều này và xem nó như thế nào tìm thấy những chiếc máy bay mới.
Vì vậy, nếu tôi di chuyển nó xung quanh đây, bạn thấy nó đã phát hiện ra một chiếc máy bay mới.
Chúng ta nhanh chóng chỉ nó vào một phần khác của bảng này, và nó đã tìm thấy một chiếc máy bay khác.
Và nếu tôi di chuyển dọc theo bảng này, cuối cùng nó sẽ hợp nhất cả hai chúng lại với nhau.
Và nó đã tìm ra rằng chỉ có một chiếc máy bay ở đó.
Vì vậy, tiếp theo, hãy đặt một số đối tượng thực tế ở đây.

English: 
So if I move this along our table, you see
that it basically slides along this table.
It's also using plane detection in parallel.
And we can visualize this to see what's going
on.
So let's bring up our Debug menu here and
activate the second option here, which is
Debug Visualizations.
Let's close it.
And what you see here is the plane that it
has detected.
To give you a better idea, let's restart this
and see how it finds new planes.
So if I'm moving it around here, you see it
has detected a new plane.
Let's quickly point it at another part of
this table, and it has found another plane.
And if I'm moving this along this table, it
eventually merges both of them together.
And it figured out that there's just one plane
there.
So next, let's place some actual objects here.

Vietnamese: 
Con gái tôi yêu cầu mang một số hoa cho buổi thuyết trình.
Và tôi không muốn làm cô ấy thất vọng.
Vì vậy, chúng ta hãy làm cho điều này lãng mạn hơn ở đây và đặt một bình hoa tốt đẹp.
Trong trường hợp đó, chúng tôi lại nhấn vào thử nghiệm vào giữa màn hình của chúng tôi và tìm giao lộ
điểm để đặt đối tượng.
Một khía cạnh quan trọng ở đây là bình này thực sự xuất hiện trong quy mô thế giới thực.
Và điều này có thể xảy ra do hai điều.
Một là Thế giới theo dõi cung cấp cho chúng tôi với tư thế quy mô.
Và điều thứ hai là mô hình 3-D của chúng ta thực sự được mô phỏng trong 3-D trong tọa độ thực.
Vì vậy, điều này thực sự quan trọng nếu bạn tạo nội dung cho sự kiện gia tăng mà bạn thực hiện
điều này vào tài khoản rằng bình này không nên xuất hiện như cao như xây dựng hoặc quá nhỏ.

English: 
My daughter asked to bring some flowers to
the presentation.
And I don't want to disappoint her.
So, let's make this more romantic here and
place a nice vase.
In that case, we again hit-test against the
center of our screen and find the intersection
the point to place the object.
One important aspect here is that this vase
actually appears in real-world scale.
And this is possible due to two things.
One is that WorldTracking provides us with
the pose to scale.
And the second thing is that our 3-D model
is actually modeled in 3-D in real-world coordinates.
So this is really important if you're creating
content for augmented reality that you take
this into account that this vase should not
appear as high as building or too small.

English: 
So let's go ahead and place a more interactive
object, which is my chameleon friend here.
And one nice thing -- thank you -- and one
nice thing is that you always know the position
of the user when you're running WorldTracking.
So you can have your virtual content interact
with the user in the real world.
So, if I move over here, it might eventually
turn to me, if he's not scared.
Yeah, there we go.
And if I get even closer he might react in
even different ways.
Let's see.
It's a bit -- oh!
There we go.
Another thing that chameleons can do is change
their color.

Vietnamese: 
Vì vậy, chúng ta hãy tiếp tục và đặt một đối tượng tương tác hơn, đó là người bạn tắc kè của tôi ở đây.
Và một điều tốt đẹp - cảm ơn bạn - và một điều tốt đẹp là bạn luôn biết vị trí
của người dùng khi bạn đang chạy WorldTracking.
Vì vậy, bạn có thể có nội dung ảo tương tác với người dùng trong thế giới thực.
Vì vậy, nếu tôi di chuyển ở đây, nó cuối cùng có thể quay sang tôi, nếu anh ta không sợ hãi.
Vâng, chúng tôi đi.
Và nếu tôi gần gũi hơn, anh ấy có thể phản ứng theo những cách khác nhau.
Để xem.
Đó là một chút - oh!
Đây rồi.
Một thứ mà tắc kè hoa có thể làm là thay đổi màu sắc của chúng.

Vietnamese: 
Và nếu tôi chạm vào anh ấy, anh ấy sẽ điều chỉnh màu sắc.
Vì vậy, hãy cho nó một màu xanh lá cây.
Và một tính năng tốt đẹp mà chúng tôi đưa vào đây là tôi có thể di chuyển anh ta dọc theo bảng, và anh ta sẽ
thích hợp với màu nền của bảng để pha trộn độc đáo.
Vì vậy, đây là ứng dụng mẫu của chúng tôi.
Bạn có thể tải nó từ trang web và đưa vào nội dung của riêng bạn và chơi với
nó về cơ bản.
Vì vậy, tiếp theo, chúng ta sẽ có một cái nhìn tại rendering với ARKit.
Rendering mang lại sự hiểu biết về việc theo dõi và cảnh cùng với nội dung của bạn.
Và để kết xuất với ARKit, bạn cần phải xử lý tất cả các thông tin mà chúng tôi cung cấp

English: 
And if I tap him, he adjusts the color.
So let's give it a green.
And one nice feature that we put in here is
I can move him along the table, and he will
adapt to the background color of the table
in order to blend in nicely.
So this is our sample application.
You can download it from the website and put
in your own contents and play around with
it, basically.
So next, we're going to have a look at rendering
with ARKit.
Rendering brings tracking and scene understanding
together with your content.
And in order to render with ARKit, you need
to process all the information that we provide

Vietnamese: 
bạn trong một ARFrame.
Đối với những người bạn sử dụng SceneKit và SpriteKit, chúng tôi đã tạo chế độ xem cá nhân
chăm sóc rend ARFrames cho bạn.
Nếu bạn đang sử dụng Metal và muốn tạo công cụ rendering của riêng bạn hoặc tích hợp ARKit
vào công cụ kết xuất hiện tại của bạn, chúng tôi sẽ cung cấp một mẫu cho bạn một ý tưởng
làm thế nào để làm điều này và cung cấp một điểm khởi đầu tốt.
Chúng ta hãy cùng nhìn vào mỗi một trong số đó, bắt đầu bằng SceneKit.
Đối với SceneKit chúng tôi đang cung cấp một ARSCNView, một phân lớp con của một SCNView.
Nó chứa một ARSession mà nó sử dụng để cập nhật của nó rendering.
Vì vậy, điều này bao gồm việc vẽ hình ảnh máy ảnh trong nền, có tính đến
xoay vòng của thiết bị cũng như bất kỳ thay đổi nào [không thể đọc được].
Tiếp theo, nó cập nhật một SCNCamera dựa trên các phép biến đổi theo dõi mà chúng tôi cung cấp trong một
ARCamera.

English: 
you in an ARFrame.
For those of you using SceneKit and SpriteKit,
we have already created customized views that
take care of rending ARFrames for you.
If you're using Metal, and want to create
your own rendering engine or integrate ARKit
into your existing rendering engine, we're
providing a template that gives you an idea
of how to do this and provides a good starting
point.
Let's have a look at each one of those, starting
with SceneKit.
For SceneKit we're providing an ARSCNView,
which is a subclass of an SCNView.
It contains an ARSession that it uses to update
its rendering.
So this includes drawing the camera image
in the background, taking into account the
rotation of the device as well as any [inaudible]
changes.
Next, it updates an SCNCamera based on the
tracking transforms that we provide in an
ARCamera.

Vietnamese: 
Vì vậy, cảnh của bạn vẫn nguyên vẹn và ARKit chỉ đơn giản kiểm soát một SCNCamera bằng cách di chuyển nó xung quanh
cảnh bạn di chuyển xung quanh thiết bị của mình trong thế giới thực.
Nếu bạn đang sử dụng Ước lượng ánh sáng, chúng tôi tự động đặt một đầu dò SCN vào cảnh của bạn để
nếu bạn sử dụng các đồ vật có chiếu sáng dựa trên cơ thể bạn có thể tận dụng hoặc
tự động tận dụng Ước lượng ánh sáng.
Và một điều mà ARCNView thực hiện là bản đồ SCNNotes đến ARAnchors, do đó bạn không thực sự cần
giao diện với ARAnchors trực tiếp, nhưng có thể tiếp tục sử dụng SCNNotes.
Điều này có nghĩa bất cứ khi nào một ARAnchor mới được thêm vào phiên, ARSCNView sẽ tạo ra
một nút cho bạn.
Và mỗi khi chúng ta cập nhật ARAnchor, như biến đổi của nó, chúng ta cập nhật các nút chuyển đổi
tự động.

English: 
So your scene stays intact and ARKit simply
controls an SCNCamera by moving it around
the scene the way you move around your device
in the real world.
If you're using Light Estimation, we automatically
place an SCN light probe into your scene so
if you use objects with physically-based lighting
enabled you can already take advantage or
automatically take advantage of Light Estimation.
And one thing that ARCNView does is map SCNNotes
to ARAnchors so you don't actually need to
interface with ARAnchors directly, but can
continue to use SCNNotes.
This means whenever a new ARAnchor is being
added to the session, ARSCNView will create
a node for you.
And every time we update the ARAnchor, like
its transform, we update the nodes transform
automatically.

Vietnamese: 
Và điều này được xử lý thông qua các delegate ARSCNView.
Vì vậy, mỗi lần chúng ta thêm một anchor mới vào phiên, ARSCNView sẽ tạo ra một SCNNode mới cho bạn.
Nếu bạn muốn cung cấp các nút riêng của mình, bạn có thể thực hiện nút renderer Để neo và
trở lại nút tùy chỉnh của bạn cho việc này.
Sau đó, SCNNode sẽ được thêm vào đồ thị cảnh.
Và bạn sẽ nhận được một trình kết xuất cuộc gọi khác delegate didAdd nút cho neo.
Tương tự đúng cho bất cứ khi nào một nút đang được cập nhật.
Vì vậy, trong trường hợp đó, chuyển đổi DSCNNodes sẽ được tự động cập nhật với ARAnchors
chuyển đổi và bạn sẽ nhận được hai cuộc gọi lại khi điều này xảy ra.
Một cái trước khi chúng ta cập nhật biến đổi của nó, và một cái khác sau khi chúng ta cập nhật biến đổi.
Bất cứ khi nào ARAnchor đang được gỡ bỏ khỏi phiên làm việc, chúng tôi sẽ tự động loại bỏ tương ứng

English: 
And this is handled through the ARSCNView
delegate.
So every time we add a new anchor to the session,
ARSCNView will create a new SCNNode for you.
If you want to provide your own nodes, you
can implement renderer nodeFor anchor and
return to your custom node for this.
After this, the SCNNode will be added to the
scene graph.
And you will receive another delegate call
renderer didAdd node for anchor.
The same holds true for whenever a node is
being updated.
So in that case, DSCNNodes transform will
be automatically updated with the ARAnchors
transform and you will receive two callbacks
when this happens.
One before we update its transform, and another
one after we update the transform.
Whenever an ARAnchor is being removed from
the session, we automatically remove the corresponding

Vietnamese: 
SCNNode từ đồ thị cảnh và cung cấp cho bạn trình kết xuất gọi lại nút didRemove
cho neo.
Đây là SceneKit với ARKit.
Tiếp theo, chúng ta hãy cùng xem SpriteKit.
Đối với SpriteKit chúng tôi đang cung cấp một ARSKview, một phân lớp phụ của SKView.
Nó chứa một ARSession, nó sử dụng để cập nhật của nó rendering.
Điều này bao gồm việc vẽ hình ảnh camera dưới nền, và trong trường hợp này, lập bản đồ
SKNodes đến ARAnchors.
Vì vậy, nó cung cấp một tập hợp rất giống nhau các phương pháp đại biểu để SceneKit, mà nó có thể sử dụng.
Một điểm khác biệt chính là SpriteKit là một công cụ dựng hình 2-D.
Điều đó có nghĩa là chúng ta không thể đơn giản cập nhật một camera đang được di chuyển xung quanh.
Vì vậy, ARKit làm gì ở đây là dự án vị trí của ARAnchor của chúng tôi vào chế độ xem SpriteKit.
Và sau đó làm cho Sprites là bảng quảng cáo tại các địa điểm này, tại các địa điểm dự kiến.

English: 
SCNNode from the scene graph and provide you
with the callback renderer didRemove node
for anchor.
So this is SceneKit with ARKit.
Next, let's have a look at SpriteKit.
For SpriteKit we're providing an ARSKview,
which is a subclass of SKView.
It contains an ARSession, which it uses to
update its rendering.
This includes drawing the camera image in
the background, and in this case, mapping
SKNodes to ARAnchors.
So it provides a very similar set of delegate
methods to SceneKit, which it can use.
One major difference is that SpriteKit is
a 2-D rendering engine.
So that means we cannot simply update a camera
that is being moved around.
So what ARKit does here is project our ARAnchor's
positions into the SpriteKit view.
And then render the Sprites as billboards
at these locations, at the projected locations.

English: 
This means that the Sprites will always be
facing the camera.
If you want to learn more about this, there
a session from the SpriteKit team, "Going
beyond 2-D in SpriteKit" which will focus
on how to integrate ARKit with SpriteKit.
And next, let's have a look at custom rendering
with ARKit using Metal.
There are four things that you need to do
in order to render with ARKit.
The first is draw the camera image in the
background.
You usually create a texture for this and
draw it in a background.
The next thing is to update our virtual camera
based on our ARCamera.
This contains setting the view matrix as well
as the projection matrix.
Third item is to update the lighting situation
or the light in your scene based on our light
estimate.

Vietnamese: 
Điều này có nghĩa Sprites sẽ luôn luôn phải đối mặt với camera.
Nếu bạn muốn tìm hiểu thêm về điều này, có một phiên họp từ nhóm SpriteKit, "Going
vượt quá 2-D trong SpriteKit "sẽ tập trung vào cách tích hợp ARKit với SpriteKit.
Và tiếp theo, chúng ta hãy cùng xem xét việc dựng hình tùy chỉnh với ARKit sử dụng Metal.
Có bốn điều bạn cần làm để render với ARKit.
Đầu tiên là vẽ hình ảnh camera dưới nền.
Bạn thường tạo ra một kết cấu cho điều này và vẽ nó trong một nền.
Điều tiếp theo là cập nhật máy ảnh ảo dựa trên ARCamera của chúng tôi.
Điều này có chứa thiết lập ma trận xem cũng như ma trận chiếu.
Mục thứ ba là cập nhật tình huống ánh sáng hoặc ánh sáng trong cảnh của bạn dựa trên ánh sáng của chúng tôi
ước tính.

English: 
And finally, if you have placed geometry based
on scene understanding, then you would use
the ARAnchors in order to set the transforms
correctly.
All this information is contained in an ARFrame.
And you have two ways of how to access this
ARFrame.
One is by polling the current frame property
on ARSession.
So, if you have your own render loop you would
use -- well, you could use this method to
access the current frame.
And then you should also take advantage of
the timestamp property on ARFrame in order
to avoid rendering the same frame multiple
times.
An alternative is to use our Session Delegate,
which provides you with session didUpdate
frame every time a new frame has been calculated.
In that case, you can just simply take it
and then update your rendering.
By default, this is called on the main [inaudible],
but you can also provide your own dispatch

Vietnamese: 
Và cuối cùng, nếu bạn đã đặt hình học dựa trên sự hiểu biết cảnh, thì bạn sẽ sử dụng
các ARAnchors để thiết lập các phép biến đổi một cách chính xác.
Tất cả thông tin này được chứa trong một ARFrame.
Và bạn có hai cách để truy cập ARFrame này.
Một là bằng cách bỏ phiếu thuộc tính frame hiện tại vào ARSession.
Vì vậy, nếu bạn có vòng lặp render riêng của bạn, bạn sẽ sử dụng - tốt, bạn có thể sử dụng phương pháp này để
truy cập khung hiện tại.
Và sau đó bạn cũng nên tận dụng lợi thế của thuộc tính dấu thời gian trên ARFrame theo thứ tự
để tránh hiển thị cùng một khung nhiều lần.
Một cách khác là sử dụng Session Delegate của chúng tôi, cung cấp cho bạn phiên didUpdate
khung mỗi khi một khung mới đã được tính toán.
Trong trường hợp đó, bạn chỉ có thể lấy nó và sau đó cập nhật rendering của bạn.
Theo mặc định, điều này được gọi là trên [inaudible] chính, nhưng bạn cũng có thể cung cấp công văn của riêng bạn

Vietnamese: 
hàng đợi, mà chúng ta sẽ sử dụng để gọi phương thức này.
Vì vậy, chúng ta hãy nhìn vào những gì Update Rendering chứa.
Vì vậy, điều đầu tiên là để vẽ hình ảnh máy ảnh trong nền.
Và bạn có thể truy cập vào thuộc tính hình ảnh đã chụp trên ARFrame, đó là bộ đệm CV Pixel.
Bạn có thể tạo ra kết cấu Metal dựa trên bộ đệm Pixel này và sau đó vẽ một quad trong
Cơ sở
Lưu ý rằng đây là Bộ đệm Pixel được cung cấp cho chúng tôi qua AV Foundation, vì vậy bạn nên
không nắm giữ quá nhiều khung trong một thời gian dài, nếu không bạn sẽ ngừng nhận
Cập nhật
Mục tiếp theo là cập nhật máy ảnh ảo dựa trên ARCamera của chúng tôi.
Đối với điều này chúng ta phải xác định ma trận xem cũng như ma trận bảo vệ.
Ma trận xem chỉ đơn giản là nghịch đảo của chuyển đổi máy ảnh của chúng tôi.
Và để tạo ra ma trận chiếu, chúng tôi đang cung cấp cho bạn một phương pháp tiện lợi trên

English: 
queue, which we will use to call this method.
So let's look into what Update Rendering contains.
So the first thing is to draw the camera image
in the background.
And you can access the captured image property
on an ARFrame, which is the CV Pixel Buffer.
You can generate Metal texture based on this
Pixel Buffer and then draw in a quad in the
background.
Note that this is a Pixel Buffer that is vended
to us through AV Foundation, so you should
not hold on to too many of those frames for
too long, otherwise you will stop receiving
updates.
The next item is to update our virtual camera
based on our ARCamera.
For this we have to determine the view matrix
as well as the protection matrix.
The view matrix is simply the inverse of our
camera transform.
And in order to generate the projection matrix,
we are offering you a convenience method on

English: 
the ARCamera, which provides you with a projection
matrix.
The third step would be to update the lighting.
So for this, simply access the Light Estimate
property and use its ambient intensity in
order to update your lighting model.
And finally would be to iterate over the anchors
and its 3-D locations in order to update the
transform of the geometries.
So any anchor that you have added manually
to the session or any anchor that has been
detected or that has been added to plane detection
will be part of these frame anchors.
Then are a few things to note when rendering
based on a camera image.
We want to have a look at those.
So one thing is that the captured image that
is contained in an ARFrame is always provided
in the same orientation.
However, if you rotate your physical device,
it might not line up with your user interface

Vietnamese: 
ARCamera, cung cấp cho bạn một ma trận chiếu.
Bước thứ ba là cập nhật ánh sáng.
Vì vậy, cho điều này, chỉ cần truy cập vào tài sản Ước lượng ánh sáng và sử dụng cường độ xung quanh trong
để cập nhật mô hình ánh sáng của bạn.
Và cuối cùng là lặp lại các neo và vị trí 3-D để cập nhật
chuyển đổi các hình học.
Vì vậy, bất kỳ anchor mà bạn đã thêm bằng tay vào phiên hoặc bất kỳ anchor đã được
phát hiện hoặc đã được bổ sung vào việc phát hiện máy bay sẽ là một phần của các khung neo.
Sau đó là một số điều cần lưu ý khi hiển thị dựa trên hình ảnh của máy ảnh.
Chúng tôi muốn có một cái nhìn vào những người.
Một điều nữa là hình ảnh chụp được chứa trong một ARFrame luôn được cung cấp
trong cùng một định hướng.
Tuy nhiên, nếu bạn xoay thiết bị vật lý của mình, nó có thể không phù hợp với giao diện người dùng của bạn

Vietnamese: 
sự định hướng.
Và cần phải áp dụng một phép biến đổi để thực hiện đúng.
Một điều nữa là tỷ lệ khung hình của hình ảnh máy ảnh có thể không nhất thiết phải là đường thẳng
với thiết bị của bạn.
Và điều này có nghĩa là chúng tôi phải tính đến điều này để làm cho máy ảnh của chúng tôi
hình ảnh trong màn hình.
Để khắc phục điều này hoặc để làm cho điều này dễ dàng hơn cho bạn, chúng tôi đang cung cấp cho bạn các phương pháp trợ giúp.
Vì vậy, có một phương pháp trên ARFrame, đó là Display Transform.
Chuyển đổi hiển thị biến đổi từ không gian khung thành không gian xem.
Và bạn chỉ cần cung cấp nó với kích thước cổng của bạn xem cũng như định hướng giao diện của bạn,
và bạn sẽ nhận được một biến đổi theo.
Trong ví dụ Metal của chúng ta, chúng ta đang sử dụng phép nghịch đảo của phép biến đổi này để điều chỉnh tọa độ kết cấu
nền máy ảnh của chúng tôi.
Và để đi với điều này là sự khác biệt ma trận chiếu có tính đến người sử dụng

English: 
orientation.
And a transform needs to be applied in order
to render this correctly.
Another thing is that the aspect ratio of
the camera image might not necessarily line
up with your device.
And this means that we have to take this into
account in order to properly render our camera
image in the screen.
To fix this or to make this easier for you,
we're providing you with helper methods.
So there's one method on ARFrame, which is
the Display Transform.
The Display Transform transforms from frame
space into view space.
And you simply provide it with your view port
size as well as your interface orientation,
and you will get an according transform.
In our Metal example, we are using the inverse
of this transform to adjust the texture coordinates
of our camera background.
And to go with this is the projection matrix
variance that takes into account the user

Vietnamese: 
giao diện định hướng cũng như kích thước cổng xem.
Vì vậy, bạn vượt qua những người cùng với cắt giới hạn máy bay và bạn có thể sử dụng ma trận chiếu
để thu hút chính xác nội dung ảo của bạn trên đầu trang hình ảnh của máy ảnh.
Vì vậy, đây là ARKit.
Để tóm tắt, ARKit là một API cấp cao được thiết kế để tạo ra các ứng dụng thực tế tăng cường
trên iOS.
Chúng tôi cung cấp cho bạn Theo dõi Thế giới, cung cấp cho bạn vị trí tương đối của thiết bị của bạn
đến một điểm khởi đầu.
Để đặt vật thể vào thế giới thực, chúng tôi cung cấp cho bạn sự hiểu biết về cảnh.
Sự hiểu biết về cảnh cung cấp cho bạn khả năng phát hiện máy bay cũng như khả năng đánh trúng
thế giới thực để tìm tọa độ 3-D và đặt vật thể ở đó.
Và để cải thiện tính hiện thực của nội dung được tăng cường của chúng tôi, chúng tôi đang cung cấp cho bạn
một ước tính nhẹ dựa trên hình ảnh của máy ảnh.

English: 
interface orientation as well as the view
port size.
So you pass those along with clipping planes
limits and you can use this projection matrix
in order to correctly draw your virtual content
on top of the camera image.
So this is ARKit.
To summarize, ARKit is a high level API designed
for creating augmented reality applications
on iOS.
We provide you with World Tracking, which
gives you the relative position of your device
to a starting point.
In order to place objects into the real world,
we provide you with Scene Understanding.
Scene Understanding provides you with Plane
Detection as well as the ability to hit-test
the real world in order to find 3-D coordinates
and place objects there.
And in order to improve the realism of our
augmented content, we're providing you with
a light estimate based on the camera image.

English: 
We provide custom integration into SceneKit
and SpriteKit as well as a template for Metal
if you want to get started integrating ARKit
into your own rendering engine.
You can find more information on the website
of our talk here.
And there are a couple of related sessions
from the SceneKit team who will also have
a look at how to use dynamic shadows with
ARKit and Sprite and SceneKit as well as a
session from the SpriteKit team who will focus
on using ARKit with SpriteKit.
So, we're really excited of bringing this
out into your hands.
And we are looking forward to see the first
applications that you're going to build with
it.
So please go ahead and download the sample
code, the sample application from our website.
Put your own content into it and show it around.
And be happy.
Thank you.

Vietnamese: 
Chúng tôi cung cấp tích hợp tuỳ chỉnh vào SceneKit và SpriteKit cũng như một mẫu cho Metal
nếu bạn muốn bắt đầu tích hợp ARKit vào công cụ dựng hình của riêng bạn.
Bạn có thể tìm thêm thông tin trên trang web của cuộc trò chuyện của chúng tôi ở đây.
Và có một vài phiên họp liên quan từ đội SceneKit người cũng sẽ có
một cái nhìn làm thế nào để sử dụng bóng tối năng động với ARKit và Sprite và SceneKit cũng như một
phiên họp từ nhóm SpriteKit sẽ tập trung sử dụng ARKit với SpriteKit.
Vì vậy, chúng tôi thực sự vui mừng khi đưa ra điều này vào tay của bạn.
Và chúng tôi mong muốn được chứng kiến ​​những ứng dụng đầu tiên mà bạn sẽ xây dựng với
nó.
Vì vậy, hãy đi trước và tải mẫu mã, ứng dụng mẫu từ trang web của chúng tôi.
Đặt nội dung của riêng bạn vào đó và hiển thị nó xung quanh.
Và hạnh phúc.
Cảm ơn
