Plik:Bezier curves composition ray-traced in 3D.png
Treść strony nie jest dostępna w innych językach.
Z Wikibooks, biblioteki wolnych podręczników.
Rozmiar podglądu – 600 × 600 pikseli. Inne rozdzielczości: 240 × 240 pikseli | 480 × 480 pikseli | 768 × 768 pikseli | 1024 × 1024 pikseli | 1936 × 1936 pikseli.
Rozmiar pierwotny (1936 × 1936 pikseli, rozmiar pliku: 3,52 MB, typ MIME: image/png)
Ten plik znajduje się w Wikimedia Commons i może być używany w innych projektach. Poniżej znajdują się informacje ze strony opisu tego pliku.
Ta PNG grafika rastrowa została stworzona za pomocą Python.
Opis
OpisBezier curves composition ray-traced in 3D.png |
English: Composition is generated in Python. Nodes of bezier curves are following a vector field generated with the open simplex noise algorithm. Scene is ray-traced with PlotOptiX package. |
Data | |
Źródło | Praca własna |
Autor | Rob su |
Licencja
Ja, właściciel praw autorskich do tego dzieła, udostępniam je na poniższej licencji
Ten plik udostępniony jest na licencji Creative Commons Uznanie autorstwa – Na tych samych warunkach 4.0 Międzynarodowe.
- Wolno:
- dzielić się – kopiować, rozpowszechniać, odtwarzać i wykonywać utwór
- modyfikować – tworzyć utwory zależne
- Na następujących warunkach:
- uznanie autorstwa – musisz określić autorstwo utworu, podać link do licencji, a także wskazać czy utwór został zmieniony. Możesz to zrobić w każdy rozsądny sposób, o ile nie będzie to sugerować, że licencjodawca popiera Ciebie lub Twoje użycie utworu.
- na tych samych warunkach – Jeśli zmienia się lub przekształca niniejszy utwór, lub tworzy inny na jego podstawie, można rozpowszechniać powstały w ten sposób nowy utwór tylko na podstawie tej samej lub podobnej licencji.
Source code (python)
import numpy as np
from matplotlib import cm
# docs, examples: https://plotoptix.rnd.team
from plotoptix import TkOptiX
from plotoptix.materials import m_plastic, m_metallic
from plotoptix.utils import make_color, simplex
b = 8000 # number of curves
n = 80 # nodes per curve
dt = 0.06 # nodes distance
inp = np.zeros((b, 3, 4), dtype=np.float32)
xyz = np.stack((
np.random.normal(loc=0, scale=1.0, size=b),
np.random.normal(loc=0, scale=1.0, size=b),
np.random.normal(loc=0, scale=1.0, size=b))).T
for c in range(b):
mag = np.linalg.norm(xyz[c])
xyz[c] *= np.sqrt(mag) / mag
ofs = 50 * np.random.rand(3)
for c in range(b):
inp[c,:,:3] = xyz[c]
inp[c,:,3] = ofs # sync the 4'th dim of the noise
pos = np.zeros((b, n, 3), dtype=np.float32)
col = np.zeros((b, n, 3), dtype=np.float32)
r = np.zeros((b, n), dtype=np.float32)
rnd = simplex(inp)
rprev = np.copy(rnd)
for t in range(n):
rt = 2.0 * (t+1) / (n+2) - 1
rt = 1 - rt*rt
r[:,t] = 0.07 * rt * rt
for c in range(b):
mag = np.linalg.norm(rnd[c])
r[c,t] *= 0.2 + 0.8 * mag
rnd[c] *= (dt/mag) # normalize and scale the step size
inp[c,:,:3] += rnd[c] # step in the field direction
pos[c,t] = inp[c,0,:3]
fi = (1/(dt*dt)) * np.dot(rnd[c], rprev[c])
cc = cm.get_cmap("bone")(np.power(2*fi-1,19))[:3]
col[c,t] = make_color(cc)
rprev = np.copy(rnd)
rnd = simplex(inp, rnd) # noise at the next pos
rt = TkOptiX(start_now=False)
rt.set_param(
min_accumulation_step=4,
max_accumulation_frames=500,
rt_timeout=100000,
light_shading="Soft"
)
rt.set_uint("path_seg_range", 4, 10)
exposure = 1.2; gamma = 2.2
rt.set_float("tonemap_exposure", exposure)
rt.set_float("tonemap_gamma", gamma)
rt.set_float("denoiser_blend", 0.25)
rt.add_postproc("Denoiser")
m_metallic["VarFloat"]["base_roughness"] = 0.004
rt.setup_material("metal", m_metallic)
rt.setup_material("plastic", m_plastic)
rt.setup_camera("dof_cam", eye=[0, 0, 12], target=[0, 0, 0], fov=40, focal_scale=0.86, cam_type="DoF")
rt.setup_light("l1", pos=[8, -3, 13], color=1.5*np.array([0.99, 0.97, 0.93]), radius=5)
rt.setup_light("l2", pos=[-17, -7, 5], u=[0, 0, -10], v=[0, 14, 0], color=1*np.array([0.25, 0.28, 0.35]), light_type="Parallelogram")
for c in range(b):
if np.random.uniform() < 0.1:
rt.set_data("c"+str(c), pos=pos[c], r=2.1*r[c], c=col[c], geom="BezierChain", mat="plastic")
else:
rt.set_data("c"+str(c), pos=pos[c], r=0.33*r[c], c=[0.94, 0.93, 0.9], geom="BezierChain", mat="metal")
rt.show()
Obiekty przedstawione na tym zdjęciu
przedstawia
Jakaś wartość bez elementu Wikidanych
30 maj 2020
image/png
c573a602bd2f8c99d40822f5b6a817e554ae8b99
3 695 704 bajt
1936 piksel
1936 piksel
Historia pliku
Kliknij na datę/czas, aby zobaczyć, jak plik wyglądał w tym czasie.
Data i czas | Miniatura | Wymiary | Użytkownik | Opis | |
---|---|---|---|---|---|
aktualny | 21:34, 30 maj 2020 | 1936 × 1936 (3,52 MB) | Rob su | Uploaded own work with UploadWizard |
Lokalne wykorzystanie pliku
Poniższa strona korzysta z tego pliku:
Globalne wykorzystanie pliku
Ten plik jest wykorzystywany także w innych projektach wiki:
- Wykorzystanie na en.wikipedia.org
- Wykorzystanie na fa.wikipedia.org
Metadane
Niniejszy plik zawiera dodatkowe informacje, prawdopodobnie dodane przez aparat cyfrowy lub skaner użyte do wygenerowania tego pliku.
Jeśli plik był modyfikowany, dane mogą być częściowo niezgodne z parametrami zmodyfikowanego pliku.
Szerokość | 3540 px |
---|---|
Wysokość | 3540 px |
Interpretacja fotometryczna | RGB |
Próbek na piksel | 3 |
Rozdzielczość w poziomie | 96 punktów na cal |
Rozdzielczość w pionie | 96 punktów na cal |
Bitów na próbkę |
|
Data i czas zeskanowania | 15:29, 30 maj 2020 |
Data i czas modyfikacji pliku | 23:22, 30 maj 2020 |
Data ostatniej modyfikacji metadanych | 23:22, 30 maj 2020 |
Unikalny identyfikator oryginalnego dokumentu | xmp.did:5f8d46a7-5999-3f43-99ee-2af30165e791 |