Skip to content

BUGProtectionAssociation/Function-Visualizer-Blender-Add-on

Repository files navigation

Projekt końcowy Add-on do Blendera

Tomasz Dziób


Function Visualizer

Dodatek tworzący wizualizację 3D wybranej funkcji dwóch zmiennych.
Projekt powstał przy wykorzystaniu API Blendera.

Dokumentacja API Blendera »
Logo
gif1 gif2
gif3

Spis Treści
  1. Opis projektu
  2. Jak zacząć
  3. Użycie
  4. Struktura projektu

Opis projektu

Projekt Function Visualizer to dodatek do Blendera, który umożliwia wizualizację funkcji matematycznych dwóch zmiennych w przestrzeni 3D. Użytkownicy mogą generować siatki reprezentujące różne funkcje, które zostaną pokazane w widoku 3D w Blenerze. Funkcjonalność dodatku opiera się na API Blendera, co zapewnia łatwą integrację z innymi narzędziami Blendera i jego środowiskiem.

Cel projektu

Projekt powstał z inspiracji kanału na Youtube użytkownika 3Blue1Brown tworzącego content naukowy w dużej mierze opierający się na prostych i zrozumiałych wizualizacjach. Korzysta on z biblioteki do Pythona Manim która posiada dość stromą krzywą uczenia. Dlatego wpadłem na pomysł stworzenia prostego dodatku do programu, który wiele ludzi zna, lub kiedyś korzystało.

3b1b

Celem tego dodatku jest umożliwienie łatwego i szybkie wizualizowanie funkcji matematycznych w formie 3D, co może być pomocne w edukacji, analizach matematycznych oraz w różnych zastosowaniach inżynieryjnych i naukowych. Projekt ma na celu umożliwienie użytkownikowi wprowadzenia funkcji, które zostaną wizualizowane na siatce 3D, z różnymi opcjami personalizacji, takimi jak wybór liczby wierzchołków siatki, animacja kamery czy oświetlenie.

ss1 ss1

(Powrót na górę)

Jak zacząć

Aby rozpocząć korzystanie z dodatku Function Visualizer, należy wykonać kilka prostych kroków, które umożliwią prawidłową instalację oraz konfigurację w programie Blender.

Wymagania

Aby uruchomić dodatek bedzie potrzebny Blender. Dodatek był testowany na najnowszej wersji tzn. Blender 4.3. Program można pobrać ze strony:

lub korzystając z konsoli:

Linux

sudo apt install blender

macOS

brew install --cask blender

Windows

scoop install blender

Instalacja

Aby poprawnie zainstalować dodatek w Blenderze należy wykonać poniższą instrukcję:

  1. Pobierz to repozytorium jako plik .zip
  2. Włącz Blendera oraz przejdź do: Edit > Preferences > Add-ons > Install from Disk ...
instruction1 instruction2
  1. Wybierz pobrany plik .zip

  2. Dodatek powinien być poprawnie zainstalowany

Korzystanie z kodu

Aby rozwijać kod wymagana jest biblioteka NumPy:

pip install numpy

Do zwiększenia komfortu pisania w IDE można zainstalować moduł symulujący Blender Python API, nie jest on potrzebny ale uzyskamy podpowiedzi podczas pisania kodu:

pip install fake-bpy-module

Równie przydatnym dodatkiem do Visual Studio Code jest Blender Development, pozwala ona połączyć naszą sesję w IDE z oknem Blendera.

(Powrót na górę)

Użycie

Aby zacząć używać dodatku należy otworzyć wysuwane menu z prawej strony 3D Viewport oraz naleźć zakładkę Function Visualizer

instruction3 instruction4

Naszym oczom powinno wyświetlić się główne menu dodatku.

instruction3

Pozwala on na:

  • Wygenerowanie osi układu współrzędnych oraz wybranie ich widoczności
  • Wybraniu ilości vertices na krawędzi kwadratu siatki
  • Wpisaniu funkcji która będzie wizualizowania
  • Wygenerowanie siatki prezentującej funkcję
  • Ustawienie kamery i oświetleniem sceny
  • Zmianę skali animacji w zależności od rozmiaru wygenerowanj funkcji
ss1

Przykładowe funkcje które można wprowadzić

x**2 + y**2
x**2 - y**2
sin(x) * cos(y)
sqrt(x**2 + y**2)

sin(sqrt(x**2 + y**2))
sqrt(25 - x**2 - y**2)
sqrt(x**2 + y**2 - 1)

x**3 + y**3
sin(x + y)
cos(x) + cos(y)
tan(x) * tan(y)
exp(x + y)+1
log(x + y)

x**2 * sin(y) - y**2 * cos(x)
cos(x)**2 + sin(y)**2
x**3 - 3*x*y**2
y**3 - 3*x**2*y

log(abs(x + y))
x * log(x + y)
exp(x) * sin(y)
sqrt(abs(x**2 - y**2))

x**4 + 2*x**3 - 5*x**2 + 4*x - 8
x**3 - 4*x**2 + 3*x - 2
-1/3*x**5-2/3*y**2+x+7/3

Plik z geometrią wygenerowaną przy pomocy dodatku można znaleźć w Sample_project.blend

(Powrót na górę)

Struktura projektu

API Blendera wymaga dość specyficznej struktury projektu. Główna funkcja oraz służące do rejestracji i wyrejestrowania muszą znajdować się w pliku __init__.py, reszta kodu znajdować się może w innych plikach.

import bpy
from .generateMeshOperator import generateMeshOperator
from .generateMeshPanel import VIEW3D_PT_generate_mesh_panel
from .generateMeshPanel import add_properties
from .createCoordinateSystem import CreateCoordinateSystemOperator
from .generateCameraLighting import GenerateCameraLighting

def register():
    bpy.utils.register_class(generateMeshOperator)
    bpy.utils.register_class(VIEW3D_PT_generate_mesh_panel)
    bpy.utils.register_class(CreateCoordinateSystemOperator)
    bpy.utils.register_class(GenerateCameraLighting)
    add_properties()

def unregister():
    bpy.utils.unregister_class(generateMeshOperator)
    bpy.utils.unregister_class(VIEW3D_PT_generate_mesh_panel)
    bpy.utils.unregister_class(CreateCoordinateSystemOperator)
    bpy.utils.unregister_class(GenerateCameraLighting)
    del bpy.types.Scene.mesh_size

if __name__ == "__main__":
    register()

Struktura funkcji w Blenderze opiera się na klasach i operatorach, które definiują, jak dana funkcjonalność działa i jak jest prezentowana w interfejsie.

Operator — Podstawowe jednostki działania w Blenderze. Operator to funkcja, którą można wykonać np. poprzez menu, skrót klawiszowy lub panele

Panel — Są używane do wyświetlania interfejsu użytkownika w różnych obszarach Blendera, takich jak VIEW3D (widok 3D) czy PROPERTIES

Properties — Reprezentują zmienne przechowywane w kontekście Blendera, które mogą być używane do przechowywania wartości wprowadzonych przez użytkownika

Opis poszczególnych plików

generateMeshOperator.py — Zawiera klasę operatora, która generuje siatkę 3D na podstawie funkcji eval.

generateMeshPanel.py — Definiuje panel w widoku 3D. Zawiera metodę draw, która wyświetla interfejs użytkownika (np. pola do wprowadzenia funkcji).

createCoordinateSystem.py — Operator generujący układ współrzędnych w widoku 3D. Przydatne do wizualizacji funkcji matematycznych w odniesieniu do osi.

generateCameraLighting.py — Zawiera operator ustawiający kamerę i oświetlenie w scenie.

instruction3

About

Kurs Python,

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages