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

May 04 2023
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.
Modele 3D wygenerowane przy użyciu Point-E OpenAI zaimportowane do Unreal Engine 5

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 .

Wybierz text2pointcloud.ipynb

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)

Kliknij prawym przyciskiem myszy i pobierz wygenerowany plik .ply

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.

Wygenerowany model drzewa w Blenderze

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.

  1. 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.
  2. 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.
  3. Wybierz całą siatkę: w rzutni 3D po prawej stronie naciśnij „A”, aby wybrać całą siatkę.
  4. Otwórz menu „Mapowanie UV”: Po wybraniu siatki kliknij „UV” w górnym menu, a następnie wybierz „Inteligentny projekt UV”.
  5. Dostosuj ustawienia: w wyskakującym oknie „Inteligentny projekt UV” zmień „Ograniczenie kąta” na 50 stopni i „Margines wyspy” na 0,005.
  6. Potwierdź zmiany: Kliknij „OK”, aby zastosować ustawienia i wygenerować mapę UV.
Wygeneruj mapę UV modelu

Teraz, gdy masz już mapę UV dla swojego modelu, stwórzmy materiał i przypiszmy mu kolory wierzchołków:

  1. 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.
  2. 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ł.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Dodaj materiał do modelu
  1. 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.
  2. 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.
  3. 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.
  4. Pieczemy materiał
Pieczona mapa UV i model 3D

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:

  1. 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źć.
  2. 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”.
  3. Skonfiguruj ustawienia eksportu: W wyświetlonym oknie ustawień eksportu upewnij się, że następujące opcje są ustawione tak, jak pokazano na obrazku.
  4. Eksportuj obiekt FBX: Kliknij „Eksportuj FBX”, aby zapisać model jako obiekt FBX.
  5. Eksportuj do obiektu 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.