कैसे फ़ाइलों का उपयोग करने में Hololens 3 डी वस्तु फ़ोल्डर और इसे करने के लिए apllication चलाते समय

0

सवाल

मैं देख रहा हूँ के लिए एक एसडीके उपयोग कर सकते हैं कि आंतरिक फ़ोल्डर (3 डी मॉडल फ़ोल्डर) के HoloLens और इसे लोड में चल रहे एक आवेदन पत्र है और हम की कोशिश की है की एक बहुत कुछ लिंक करने के लिए कोई फायदा नहीं हुआ. कर सकते हैं किसी को भी मदद हमें इस समस्या को हल?

3d-model c# hololens internals
2021-11-24 06:35:33
1

सबसे अच्छा जवाब

0

अपने प्रश्न अत्यंत व्यापक है, लेकिन ईमानदार होना करने के लिए UWP एक संवेदनशील विषय है । मैं टाइप कर रहा हूँ मेरे फोन पर इस हालांकि, लेकिन मुझे आशा है कि यह आप में मदद करता है शुरू हो रही है ।


सब से पहले: Hololens का उपयोग करता है UWP.

करने के लिए फ़ाइल IO में UWP आवेदन आप की जरूरत है का उपयोग करने के लिए एक विशेष सी# एपीआई जो केवल काम करता है, अतुल्यकालिक! तो इस के साथ परिचित पाने अवधारणा और कीवर्ड में async, await और Task इससे पहले कि आप शुरू!

आगे ध्यान दें कि सबसे एकता के एपीआई कर सकते हैं केवल इस्तेमाल किया जा एकता पर मुख्य सूत्र! इसलिए आप की आवश्यकता होगी एक समर्पित वर्ग सक्षम बनाता है कि प्राप्त करने के लिए अतुल्यकालिक Actionएस और प्रेषण में उन्हें अगले एकता मुख्य सूत्र Update कॉल के माध्यम से एक ConcurrentQueue जैसे जैसे

using System;
using System.Collections.Concurrent;
using UnityEngine;

public class MainThreadDispatcher : MonoBehaviour
{
    private static MainThreadDispatcher _instance;

    public static MainThreadDispatcher Instance
    {
        get
        {
            if (_instance) return _instance;

            _instance = FindObjectOfType<MainThreadDispatcher>();

            if (_instance) return _instance;

            _instance = new GameObject(nameof(MainThreadDispatcher)).AddComponent<MainThreadDispatcher>();

            return _instance;
        }
    }

    private readonly ConcurrentQueue<Action> _actions = new ConcurrentQueue<Action>();

    private void Awake()
    {
        if (_instance && _instance != this)
        {
            Destroy(gameObject);
            return;
        }

        _instance = this;
        DontDestroyOnLoad(gameObject);
    }

    public void DoInMainThread(Action action)
    {
        _actions.Enqueue(action);
    }

    private void Update()
    {
        while (_actions.TryDequeue(out var action))
        {
            action?.Invoke();
        }
    }
}

अब यह कहा कि आप कर रहे हैं सबसे शायद के लिए देख Windows.Storage.KnownFolders.Objects3D है, जो एक Windows.Storage.StorageFolder.

यहाँ आप का उपयोग करेगा GetFileAsync आदेश में प्राप्त करने के लिए एक Windows.Storage.StorageFile.

तो आप का उपयोग Windows.Storage.FileIO.ReadBufferAsync आदेश में पढ़ने के लिए सामग्री के इस फ़ाइल में एक IBuffer.

और अंत में आप का उपयोग कर सकते हैं ToArray आदेश में प्राप्त करने के लिए कच्चे byte[] इसे से बाहर.

इस सब के बाद आप करने के लिए प्रेषण के परिणाम में वापस एकता मुख्य धागे में सक्षम होने के लिए आदेश का उपयोग करने के लिए यह वहाँ (या जारी रखने के साथ आयात प्रक्रिया में एक और async तरह से).

आप की कोशिश कर सकते हैं और की तरह कुछ का उपयोग

using System;
using System.IO;
using System.Threading.Tasks;

#if WINDOWS_UWP // We only have these namespaces if on an UWP device
using Windows.Storage;
using System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions;
#endif

public static class Example
{
    // Instead of directly returning byte[] you will need to use a callback
    public static void GetFileContent(string filePath, Action<byte[]> onSuccess)
    {
        Task.Run(async () => await FileLoadingTask(filePath, onSuccess));
    }
    
    private static async Task FileLoadingTask(string filePath, Action<byte[]> onSuccess)
    {
#if WINDOWS_UWP
        // Get the 3D Objects folder
        var folder = Windows.Storage.KnownFolders.Objects3D;
        // get a file within it
        var file = await folder.GetFileAsync(filePath);

        // read the content into a buffer
        var buffer = await Windows.Storage.FileIO.ReadBufferAsync(file);
        // get a raw byte[]
        var bytes = buffer.ToArray();
#else
        // as a fallback and for testing in the Editor use he normal FileIO
        var folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "3D Objects");
        var fullFilePath = Path.Combine(folderPath, filePath);
        var bytes = await File.ReadAllBytesAsync(fullFilePath);
#endif

        // finally dispatch the callback action into the Unity main thread
        MainThreadDispatcher.Instance.DoInMainThread(() => onSuccess?.Invoke(bytes));
    }
}

तो तुम क्या करते के साथ लौट आए byte[] आप अप करने के लिए! वहाँ रहे हैं कई लोडर उपकरणों और पुस्तकालयों के लिए ऑनलाइन अलग अलग फ़ाइल प्रकार के ।


आगे पढ़ने:

2021-11-24 09:34:08

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में