Нажмем правой кнопкой мышки на экземпляре AR marker и выберем Lost, соединим его с экземпляром hide и выберем Hide.

Нажмем правой кнопкой мышки на зоне редактирования функций и выберем input/keyboard. Выберем клавишу.



Нажмем правой кнопкой мышки на экземпляре keyboard и выберем Key down, соединим его с экземпляром AR marker, выбрав Register current frame.

Теперь маркер будет регистрироваться динамически, при нажатии соответствующей клавиши – поднесем к камере изображение и нажмем клавишу – должна появиться 3D модель.

В свойствах экземпляра AR marker, в качестве маркера можно установить реперный маркер, сохранив его для распечатывания.



Нажмем правой кнопкой мышки на зоне редактирования функций и выберем input/AR face tracker. Изменим размер маркера и свяжем его с объектом dummy.



Нажмем правой кнопкой мышки на экземпляре AR face tracker и выберем Found, соединим его с экземпляром hide и выберем Show. Нажмем правой кнопкой мышки на экземпляре AR face tracker и выберем Lost, соединим его с экземпляром hide и выберем Hide.



Теперь, если посмотреть прямо в камеру, появится 3D модель.

Соберем проект в Android приложение. Для этого в меню Export to Openspace3D player выберем As an Android Application.



Добавим или выберем хранилище ключей и в результате получим Android проект с готовым APK файлом в папке bin.

BeyondAR

BeyondAR это фреймворк, обеспечивающий ресурсы для разработки приложений с дополненной реальностью, основанной на георасположении на смартфонах и планшетах.

Для начала работы скачаем BeyondAR фреймворк с Github https://github.com/BeyondAR/beyondar.

Импортируем проект BeyondAR_Examples в среду разработки Android Studio.

Для запуска этого приложения на Android устройстве требуется наличие датчика ориентации.

Для сборки APK файла с большим количеством методов в коде, в Gradle файл добавим:

defaultConfig {


multiDexEnabled true

}

dependencies {


compile 'com.android.support: multidex:1.0.0»

}

android {


dexOptions {

javaMaxHeapSize «4g»

}

}

В файл манифеста:


android:name="android.support.multidex.MultiDexApplication»>

Для двух классов, возможно, придется реализовать OnMapReadyCallback.

package com.beyondar. example;


import android.content.Context;

import android. location. LocationManager;

import android. os. Bundle;

import android.support.v4.app.FragmentActivity;

import android.view.View;

import android.view.View. OnClickListener;

import android. widget. Button;

import android.widget.Toast;


import com.beyondar.android.plugin. googlemap. GoogleMapWorldPlugin;

import com.beyondar.android.util.location.BeyondarLocationManager;

import com.beyondar.android.world.GeoObject;

import com.beyondar.android. world. World;

import com.google.android.gms.maps.CameraUpdateFactory;

import com.google.android.gms.maps. GoogleMap;

import com.google.android.gms.maps. GoogleMap. OnMarkerClickListener;

import com.google.android.gms.maps. OnMapReadyCallback;

import com.google.android.gms.maps.SupportMapFragment;

import com.google.android.gms.maps.model.LatLng;

import com.google.android.gms.maps.model.Marker;


public class BeyondarLocationManagerMapActivity extends FragmentActivity implements OnMarkerClickListener, OnClickListener, OnMapReadyCallback {


private GoogleMap mMap;

private GoogleMapWorldPlugin mGoogleMapPlugin;

private World mWorld;


@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.map_google);


Button myLocationButton = (Button) findViewById(R.id.myLocationButton);


myLocationButton.setVisibility(View.VISIBLE);

myLocationButton.setOnClickListener (this);