wrld3d / unity-api

Issue tracking for the WRLD Unity SDK
28 stars 8 forks source link

Map Loads Within Unity Editor But Not When I Deploy To MacOS or Android? #72

Closed dellams closed 6 years ago

dellams commented 6 years ago

Hi there,

The map appears for me if I play it within Unity but if I build for MacOS or Android I just get a light grey screen, any ideas?

I have the API Key set OK or it wouldn't stream in as it does within the Unity editor.

Is there something else I am missing?

Many thanks, David.

p.s. Love your work, been following you from the early eeGeo days... been waiting for a usable Unity version before starting to work with, have big plans for this once I can get it working, thanks! :)

jbrownwrld commented 6 years ago

Hello there!

It sounds like the plugin isn't loading properly. Navigate to the Wrld/Plugins/Android/libs/armeabi-v7a folder in Unity and select the app-armeabi-v7a-release.aar file. In the Inspector panel, ensure that the Android checkbox is checked in the Include Platforms section. Do the same for all the files in the Wrld/Plugins/iOS folder, using the iOS checkbox instead. Also make sure to select your scene in the Include Scenes section of the Build Settings window before building.

If everything is already set up correctly, you can also try re-importing the WRLD SDK Plugin from the Asset Store.

dellams commented 6 years ago

Hi,

Thanks for getting back to me. 😊

I tried everything you said and unfortunately it still does not work.

The checkboxes were checked as you said and the scene was included for the build.

I even re-imported it all as you said and still the same result.

I then even created a whole new project from scratch and imported it fresh but still the same problem.

Any other ideas?

I am using the latest version of Unity, SDK’s, etc so is there a problem with the latest versions?

Many thanks, David.

jlunderwood commented 6 years ago

I'm unable to reproduce this consistently with the latest Unity release (2017.3.1f1) and the current asset store version of the WRLD plugin. I have seen this in the case where the WRLD API key has been added but the Unity scene and project were not saved before build and deployment. In this case, there were errors in the Android logcat -- can you check that?

If you're still seeing the issue, could you send along your Unity project to support@wrld3d.com? Also the details of the Android version on the device and logcat extract would be helpful.

dellams commented 6 years ago

Hi, thanks for getting back to me.

Where is the log cat file?

I am running on a Mac.

I am trying to view on the Android Emulator that comes with Android Studio.

It is the default device which is Nexus 5X API 27 x86.

But as I said it also does not work when building for Mac OS so I feel these two issues must be related?

I will zip it up and send to you guys too...

Many thanks, David.

dellams commented 6 years ago

Hi Guys,

Ok I have a update:

I tried deploying to my actual android device and it worked but there is a new issue, when I zoom out too far it goes back to the same grey screen?

I thought you catered for this? In your demos you seem to show this working? You can even zoom right out to view the entire globe?

Also, when I zoom in, it’s not as high quality as on your site, even the water is not animated, there are no cars, planes, etc so not sure what the problem is?

Another problem?

I also of course still get the grey screen on the Android Emulator and also on the Mac OS deploy?

Any help would be really appreciated.

Many thanks, David.

dellams commented 6 years ago

I have also sent you an email with a link for you to download my code...

jbrownwrld commented 6 years ago

Hi David,

I could not reproduce your problem with the MacOS/OSX build; I downloaded your project and built it, and it runs on my Mac. Try removing the "test.unity" scene file, so that the only scene in the project is the "Examples.unity" scene from the Wrld/Demo folder. I also noticed that there were .exe files from the build in your project directory, which may mean that you have been building Windows builds instead of Mac OSX builds. For the issue where zooming out causes the screen to go grey, you will have to turn off Fog in Unity. This can be done from the Window->Lighting->Settings menu, in the section titled "Other Settings". Cars, planes, and a number of other features are not yet supported on our Unity platform. As for the water, our Unity implementation allows you to load custom materials, so you can replace the water material with a preferred material. As for the issues you have experienced on the Android Studio Simulator, it is likely to have poor performance with 3D applications such as Unity and is not recommended.

Regards, Jordan Brown

dellams commented 6 years ago

Thanks for getting back to me.

The .exe builds are when I was building on my Windows Laptop, which worked on Windows as I recalled.

Where do the builds get deployed to? Looks like the root folder? I do not see any Mac builds? What file extension should they have?

Maybe I have a write permission to that folder on my Mac? Do I need to set up something to get this working?

Sorry I am new to Mac and to Unity so you will need to give me very clear instructions on how to resolve this please.

Windows I know inside out, but Mac I am starting from scratch so please bare with me! ;-)

The emulator is not performance issue since I have a brand new MacBook Pro with i7 2.9GHZ, 16GB RAM, Radeon 560 Pro 4GB VRAM, all the latest high speed memory, etc.

Running the emulator does not remotely tax my machine as it use to on my old Windows PC laptop.

The grey is the same issue as to why it does not appear on the Mac build.

How do I get the water to animate? Would have thought this would be the default settings?

Also, when will you add the cars, planes, etc?

I have waited a VERY LONG time for you to get the Unity SDK done since I have been following you for years since you started under eeGEO. I do not want to have to develop native Android and iOS apps, want to code once, deploy everywhere if possible?

Do you have any suggestions? I know you did a C++ build which can run on iOS and Android. Do you recommend this over Unity at this time then?

Thanks D.

dellams commented 6 years ago

Disabling the fog fixed the issue with zooming out thanks. :)

But I noticed when zooming in, the roads get a bit glitchy when rendering like they are flashing, moving about, seen this before?

Also, how do you zoom, rotate, pam, etc on the Unity Editor version?

Many thanks, David.

jbrownwrld commented 6 years ago

Hello again, Mac binaries do not have a file extension - you should be able to choose where the build goes when you make the build in Unity, but by default it is the root of your project directory. The water does not animate in Unity, as its material uses the Unity Standard shader. We do not currently have a timeframe for implementing traffic on Unity. For map controls to work, the Use Built-In Camera Controls option must be on in the Wrld Map object (where the API key goes). If this is enabled, Unity Editor map can be zoomed, rotated, and panned using the mouse, in the "Game" view; left-click-drag pans the map, right-click-drag rotates the map, and the scroll wheel zooms in and out of the map. Standard Unity Editor controls apply in the "Scene" view. Glitchy rendering of roads may be due to floating-point accuracy limitations. In the Wrld Map object (where the API key goes), try switching the Coordinate System to ECEF instead of Unity World. You can read more about the coordinate systems here: https://wrld3d.com/unity/latest/docs/examples/coordinate-systems/ and here: https://wrld3d.com/unity/latest/docs/examples/ecef-coordinate-system/

Regards, Jordan Brown

dellams commented 6 years ago

Thanks for getting back to me.

How do I use the animated water shader? As I said before I do not understand why this has not been included in Unity? When you already have that implemented elsewhere?

You also did not answer my question about whether Unity was the best SDK to use at the moment?

"I have waited a VERY LONG time for you to get the Unity SDK done since I have been following you for years since you started under eeGEO. I do not want to have to develop native Android and iOS apps, want to code once, deploy everywhere if possible?

Do you have any suggestions? I know you did a C++ build which can run on iOS and Android. Do you recommend this over Unity at this time then?"

Finally, we still have not got to the bottom of the grey issue for Android Emulator and Mac Build?

Many thanks, David.

dellams commented 6 years ago

Also, how do I switch the Coordinate System to ECEF?

I couldn't see a setting mentioned in the links you gave?

Thanks.

jbrownwrld commented 6 years ago

Hi,

The setting for the Coordinate System is called "World Space" in the Unity Inspector panel for the Wrld Map object - this is the same place where you copy-paste your API key into. Our Android and iOS native platforms use Java and Objective-C respectively (communicating with a pre-built C++ library), and have wider support of our features. You can read more about them here: https://wrld3d.com/android/latest/docs/api/ and here: https://wrld3d.com/ios/latest/docs/api/ We don't recommend any particular platforms, as different people have different use-cases. Your use-case suits Unity best, but since development on this is still ongoing, it will be missing some features from our other platforms.

As for the grey screen issue - did you try removing the "test.unity" scene and making sure that the only scene in the build settings was the "Examples.unity" scene or the "UnityWorldSpace.unity" scene, as I suggested?

The Android Simulator is not generally recommended for developing 3D-heavy applications; if it is a necessity, you may read more about using 3D hardware acceleration in the Android Studio Simulators here: https://developer.android.com/studio/run/emulator-acceleration.html

The animated water shader is not included in our Unity platform because Unity shaders are different from the shaders we use on our other platforms. Unity provide a standardised shader pipeline which we use by default, but we also provide the ability for people to use their own custom materials.

Regards, Jordan Brown

dellams commented 6 years ago

Hi thanks for getting back to me.

When will you add I animated water to Unity?

Also, any idea when you will add cars, planes, etc?

How much priority are you giving to Unity development? By the sounds of it, it is not as a high priority as your native SDK's for Android and iOS? This is why I asked the question of which was best to use...

We want to code once, deploy everywhere but not at the expense of losing features. When will Unity catch up? How much longer should we wait?

Or should we just go with native for now? Problem is, we do not want to maintain separate code bases or have to port it all to Unity later. Do you have any recommendations? How much code can be shared with the C++ Lib? Will this get around the issue?

Many thanks, David.

dellams commented 6 years ago

Your suggestion to switch to ECEF resolved the road rendering glitches thank you. :)

I have removed the test scene but I still get a grey screen for Mac OS and Android Emulator builds, any other suggestions?

Many thanks, David.

dellams commented 6 years ago

Also, do you have any examples of how to build a geo-location game similar to Pokemon Go? We could not find any geo-location examples on your site?

jbrownwrld commented 6 years ago

Hello there,

While Unity support is currently being actively worked on, we do not have a planned timeframe for adding animated water to Unity, nor for adding vehicles. If you wish to add animated water yourself, we have provided the ability to add custom materials in Unity to do so.

As previously mentioned, your use-case is best supported by Unity; as you prefer to write once, deploy everywhere, this remains the best choice.

We do not have geo-location services; you may implement a third-party geo-location service alongside our maps, as our Unity API can place objects via latitude, longitude, and altitude on the map.

One of our engineers has begun building an example project that will build and run on Mac OS and Android to give to you, to make sure there are not any differences in SDK version.

Regards, Jordan Brown

dellams commented 6 years ago

Ok great that would be really appreciated thanks! :) 👍

Do you know how I can add water through the custom materials in Unity? Sorry I am also new to Unity so is a steep learning curve for me. My background is a C# Developer so I at least have no problem with the monoscripts! ;-)

Many thanks, David.

tim-jenks commented 6 years ago

hi @dellams - best place to start with for Unity materials is here - https://docs.unity3d.com/Manual/Materials.html

We do plan to release additional texture & material packs for our Unity SDK in the future, but in the mean time have a play around with Unity's tutorials on materials.

dellams commented 6 years ago

Ok thank you. Do you know how I can get the water working the same as it does on your other SDK's?

Thanks.

jbrownwrld commented 6 years ago

Hello,

We have a version of the example project that should build and run on OSX and Android, and can be downloaded here: https://www.dropbox.com/s/hm2m331s0che9bw/ExampleProject.zip

Open one of the scenes, enter your API key, and then the build should work.

It seems that certain versions of Unity do not correctly import the Mac plugin. If you navigate to the Wrld/Plugins/x86_64 folder, and select "StreamAlpha.bundle", you can see that the plugin is included in Platform Settings for Mac OSX builds - but Unity does not include the plugin with the build. If you untick the Platform Settings options, then re-tick them and push apply, the build will then work.

The topic of shader programming is a little bit out of the scope of this issue thread, but you can find many tutorials for animated water in Unity online.

dellams commented 6 years ago

Ok thanks, will check it out. :)

What happens when you do not have 3D Map data for a certain area? Do you automatically default back to say Google Map 2D data or something similar?

Thanks.

dellams commented 6 years ago

Yes that now builds and appears on the Mac build, I also tried what you said on my own project and that also worked thanks.

But it still does not appear on the Android Emulator for your project and mine?

Any other ideas?

Was this demo project you sent meant to include any other new code or example? I thought it was going to have a GeoLocation example in it? If so, where is it?

Many thanks, David.

dellams commented 6 years ago

Also, I noticed little things like the London Eye, etc are not animated like I have seen in your other demos, do you know when this will be added?

Many thanks, David.

jbrownwrld commented 6 years ago

Hello there, We do not currently have a timeline for adding animated landmarks in the WRLD Unity SDK. The Android Emulator must be configured to emulate the armv7 ABI to work with the WRLD Unity plugin on Android. By default, the AVDManager creates the device using x86 ABI. See this page for more details: https://developer.android.com/studio/run/managing-avds.html As previously stated, we do not offer a Geolocation solution. The example project was given to aid with building on MacOS, which as you say now works correctly.

Thanks, Jordan

jonty-dawson commented 6 years ago

Closing this issue, as original post now seems addressed (deployment issues on macOS / Android). Please open new issue for any further issues or questions.