Od tekstu do obiektu Unreal Engine przy użyciu Point-E OpenAI

Jako programista prawdopodobnie słyszałeś o GPT-4 OpenAI, rewolucyjnym modelu językowym, który zmienia sposób, w jaki wchodzimy w interakcje z technologią. Firma OpenAI dokonała kolejnego znaczącego postępu w dziedzinie sztucznej inteligencji, wprowadzając Point-E, system sztucznej inteligencji, który może tworzyć modele 3D na podstawie monitów tekstowych. Dzięki możliwości generowania modeli 3D w zaledwie kilka minut na jednym GPU, Point-E może zrewolucjonizować sposób, w jaki tworzymy wirtualne obiekty i nimi manipulujemy. Chciałem sam to przetestować i zobaczyć, jak dobry jest system. W tym artykule pokażę, jak samodzielnie tworzyć modele 3D za pomocą Point-E i wykorzystywać je w Unreal Engine.
Jeśli chcesz szybko przetestować Point-E, możesz wypróbować ich demo tekst do generatora modeli 3D. Wykorzystam repozytorium GitHub firmy Point-E do wygenerowania modelu 3D w Google Colab. Ułatwili to, udostępniając pliki notatników, więc wszystko, co musisz zrobić, to załadować je bezpośrednio do notatnika Google Colab, korzystając z łącza GitHub.
Wybierz opcję Prześlij notatnik z karty plików i wklej adres URL usługi Github. Poczekaj, aż się załaduje i wybierz text2pointcloud.ipynb
plik. Pamiętaj również o zmianie typu środowiska uruchomieniowego na GPU z karty środowiska wykonawczego, na wypadek gdyby nie zostało to jeszcze ustawione, i kliknij Połącz .

Przed uruchomieniem komórek potrzebujemy kilku plików bibliotek z oryginalnego repozytorium, a także musimy zainstalować niektóre zależności pip, więc zrobimy to najpierw. Możemy to zrobić za pomocą następującego kodu. Uruchom to w osobnej komórce.
!git clone https://github.com/openai/point-e.git
%cd ./point-e
!pip install -e .
Teraz nadchodzi interesująca część, podpowiada tekst. Tutaj możesz wykazać się kreatywnością. Zamierzam stworzyć proste drzewo. Zachęcam do przeczytania ich artykułu , aby dowiedzieć się więcej o możliwościach tego systemu.
# Set a prompt to condition on.
prompt = 'a tall green tree'
# Produce a sample from the model.
samples = None
for x in tqdm(sampler.sample_batch_progressive(batch_size=1, model_kwargs=dict(texts=[prompt]))):
samples = x
import plotly.graph_objects as go
viewer = go.Figure(data=[go.Scatter3d(
x=pc.coords[:,0], y=pc.coords[:,1],z=pc.coords[:,2],
mode='markers',
marker=dict(size=2,color=['rgb({},{},{})'.format(r,g,b) for r,g,b in zip(pc.channels["R"],pc.channels["G"],pc.channels["B"])]))],
layout=dict(scene=dict(xaxis=dict(visible=False),yaxis=dict(visible=False),zaxis=dict(visible=False)))
)
viewer.show(rendere="colab")
Generated 3D model “A tall green tree”
Wygeneruj siatkę 3D z chmury punktów
Musimy być w stanie faktycznie użyć tego modelu w Unreal Engine. W tym celu przekonwertujemy to na siatkę 3D przy użyciu innego dostarczonego modelu AI. Ta sztuczna inteligencja przekształci chmurę punktów w siatkę i możemy ją zapisać jako .ply. Możemy użyć tego notatnika , aby to zrobić. Najpierw zaimportujmy biblioteki i załadujmy model SDF.
from PIL import Image
import torch
import matplotlib.pyplot as plt
from tqdm.auto import tqdm
from point_e.models.download import load_checkpoint
from point_e.models.configs import MODEL_CONFIGS, model_from_config
from point_e.util.pc_to_mesh import marching_cubes_mesh
from point_e.util.plotting import plot_point_cloud
from point_e.util.point_cloud import PointCloud
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('creating SDF model...')
name = 'sdf'
model = model_from_config(MODEL_CONFIGS[name], device)
model.eval()
print('loading SDF model...')
model.load_state_dict(load_checkpoint(name, device))
# Plot the point cloud as a sanity check.
fig = plot_point_cloud(pc, grid_size=1)
import skimage.measure # To avoid AttributeError
# Produce a mesh (with vertex colors)
mesh = marching_cubes_mesh(
pc=pc,
model=model,
batch_size=4096,
grid_size=128, # increase to 128 for resolution used in evals
progress=True,
)
# Write the mesh to a PLY file to import into some other program.
with open('mesh.ply', 'wb') as f:
mesh.write_ply(f)

Możesz wyświetlić pobrany plik siatki za pomocą tego narzędzia online — przeglądarki 3D . Zamierzam użyć Blendera do wyświetlenia siatki 3D.

Mikser
Aby rozpocząć, otwórz Blendera i utwórz nowy projekt. Następnie usuń domyślną kostkę, wybierając ją i naciskając klawisz „X”, a następnie „Usuń”. Teraz nadszedł czas, aby zaimportować model PLY. Przejdź do menu „Plik”, wybierz „Importuj” i wybierz format „PLY”. Przejdź do lokalizacji, w której zapisałeś swój model 3D i kliknij plik, aby zaimportować go do obszaru roboczego Blendera. Nadszedł czas, aby utworzyć mapę UV dla Twojej siatki.
- Przełącz na tryb „Malowanie wierzchołków”: w lewym górnym rogu widocznego obszaru kliknij menu rozwijane i wybierz tryb „Malowanie wierzchołków”. Powinieneś teraz zobaczyć swoją siatkę w jej oryginalnych kolorach.
- Wejdź do obszaru roboczego „Edycja UV”: w górnej części okna Blendera kliknij kartę „Układ” i wybierz „Edycja UV”. Spowoduje to zmianę układu obszaru roboczego i wyświetlenie edytora UV po lewej stronie ekranu.
- Wybierz całą siatkę: w rzutni 3D po prawej stronie naciśnij „A”, aby wybrać całą siatkę.
- Otwórz menu „Mapowanie UV”: Po wybraniu siatki kliknij „UV” w górnym menu, a następnie wybierz „Inteligentny projekt UV”.
- Dostosuj ustawienia: w wyskakującym oknie „Inteligentny projekt UV” zmień „Ograniczenie kąta” na 50 stopni i „Margines wyspy” na 0,005.
- Potwierdź zmiany: Kliknij „OK”, aby zastosować ustawienia i wygenerować mapę UV.

Teraz, gdy masz już mapę UV dla swojego modelu, stwórzmy materiał i przypiszmy mu kolory wierzchołków:
- Przejdź do obszaru roboczego „Shader Editor”: w górnej części okna Blendera kliknij kartę „Edycja UV” i wybierz „Cieniowanie”. Spowoduje to zmianę układu obszaru roboczego i wyświetlenie edytora cieniowania u dołu ekranu.
- Utwórz nowy materiał: w rzutni 3D po prawej stronie upewnij się, że siatka jest nadal zaznaczona. Następnie przejdź do zakładki „Właściwości materiału” na prawym pasku bocznym i kliknij przycisk „Nowy”, aby utworzyć nowy materiał.
- Dodaj węzeł „Kolor wierzchołków”: w edytorze cieniowania naciśnij „Shift+A”, aby otworzyć menu „Dodaj”, a następnie przejdź do „Wejście” i wybierz „Kolor wierzchołków”. Spowoduje to dodanie węzła „Kolor wierzchołków” do edytora.
- Połącz wyjście „Kolor”: Kliknij i przeciągnij wyjście „Kolor” węzła „Kolor wierzchołków” do wejścia „Kolor podstawowy” węzła „Principled BSDF”. Spowoduje to zastosowanie kolorów wierzchołków do podstawowego koloru materiału.
- Dodaj węzeł „Tekstura obrazu”: naciśnij ponownie „Shift+A”, aby otworzyć menu „Dodaj”, a następnie przejdź do „Tekstury” i wybierz „Tekstura obrazu”. Spowoduje to dodanie węzła „Tekstura obrazu” do edytora.
- Skonfiguruj węzeł „Tekstura obrazu”: W ustawieniach węzła „Tekstura obrazu” usuń zaznaczenie opcji „Alfa” i kliknij „OK”. Spowoduje to wyłączenie używania kanału alfa w teksturze obrazu.

- Otwórz kartę „Właściwości renderowania”: na prawym pasku bocznym kliknij kartę „Właściwości renderowania” (reprezentowaną przez ikonę kamery). Zmień silnik renderowania na cykle.
- Skonfiguruj ustawienia pieczenia: przewiń w dół do sekcji „Piec” i rozwiń ją. Ustaw „Typ pieczenia” na „Rozproszone”. Upewnij się, że w ustawieniach „Wpływ” zaznaczona jest tylko opcja „Kolor”. Zapewni to, że wypiekana jest tylko informacja o kolorze rozproszonym.
- Piecz materiał: Po skonfigurowaniu ustawień kliknij przycisk „Piec”, aby rozpocząć proces pieczenia. Blender przeniesie teraz kolory wierzchołków z materiału na mapę UV.


Eksportuj do obiektu FBX
Przed eksportem wróć do Shader Editor i odłącz węzeł „Vertex Color” od wejścia „Base Color” węzła „Principled BSDF”. Następnie połącz wyjście „Kolor” węzła „Tekstura obrazu” z wejściem „Kolor podstawowy” węzła „Principled BSDF”. Dzięki temu podczas importowania modelu do Unreal Engine zostanie użyta wypiekana tekstura.
Oto jak wyeksportować model:
- Zapisz upieczoną teksturę: w „Edytorze obrazów” kliknij „Obraz” w górnym menu i wybierz „Zapisz jako”. Zapisz upieczoną teksturę w miejscu na komputerze, w którym możesz ją później łatwo znaleźć.
- Przygotuj się do eksportu jako FBX: Gdy twój model jest nadal wybrany w rzutni 3D, przejdź do menu „Plik”, wybierz „Eksportuj” i wybierz „FBX”.
- Skonfiguruj ustawienia eksportu: W wyświetlonym oknie ustawień eksportu upewnij się, że następujące opcje są ustawione tak, jak pokazano na obrazku.
- Eksportuj obiekt FBX: Kliknij „Eksportuj FBX”, aby zapisać model jako obiekt FBX.

Nierealny silnik
Nadszedł czas, aby ożywić model 3D w silniku Unreal Engine. Aby to zrobić, po prostu zaimportuj plik FBX do projektu Unreal Engine, przeciągając go i upuszczając w „Przeglądarce treści”. Po zaimportowaniu modelu można również zaimportować upieczoną teksturę i przypisać ją do odpowiedniego gniazda materiału. Teraz wszystko jest gotowe do dodania modelu do środowiska. Po prostu przeciągnij i upuść model z „Przeglądarki zawartości” do swojej sceny, umieszczając go w dowolnym miejscu.
Teraz, gdy Twój model 3D jest gotowy, możesz zobaczyć go w akcji w Unreal Engine. Ale najpierw zabawmy się! Stworzyłem środowisko zawierające wiele obiektów, które stworzyłem za pomocą Point-E, wykonując te same czynności, które opisano w tym artykule.
Przygotuj się na zaskoczenie, gdy zanurzymy się w tym interaktywnym świecie, w którym kreatywność nie zna granic! To doskonała okazja, aby przekonać się na własne oczy o niesamowitej wszechstronności i potencjale modeli 3D używanych w silniku Unreal Engine.
Wniosek
Kończąc ten obszerny przewodnik na temat przekształcania tekstu we w pełni funkcjonalne modele 3D przy użyciu Point-E OpenAI i integrowania ich z Unreal Engine, oczywiste jest, że możliwości kreatywności są praktycznie nieograniczone. Wykorzystując moc najnowocześniejszej technologii sztucznej inteligencji i łącząc ją z wszechstronnymi narzędziami Blendera i Unreal Engine, możesz ożywić swoje najśmielsze pomysły i stworzyć oszałamiające, wciągające środowiska dla swoich projektów.
Mam nadzieję, że te przewodniki były dla Ciebie pouczające, inspirujące, a przede wszystkim przyjemne w śledzeniu. Pamiętaj, że prawdziwa magia tkwi w eksperymentowaniu i przesuwaniu granic wyobraźni. Śmiało, odkryj niesamowity świat modelowania 3D, a co najważniejsze, baw się dobrze podczas tworzenia! Przyszłość projektowania 3D już nadeszła, a Ty jesteś teraz wyposażony w wiedzę, która pozwoli Ci jak najlepiej ją wykorzystać. Udanego modelowania i niech Twoja twórcza podróż będzie wypełniona niekończącymi się odkryciami i emocjami!
Wypróbuj sam i daj mi znać, co myślisz o Point-E.
Połącz się ze mną na Twitterze , aby omówić interesujące tematy z zakresu sztucznej inteligencji.