Skocz do zawartości
View in the app

A better way to browse. Learn more.

Max3D.pl

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Napisano

mam taki skrypt (pierwszy napisany przez siebie metoda prob i bledow :/) :

vert_array = #()

#()

face_array = #()

#()

 

v1 = [0,0,0]

[0,0,0]

v2 = [1,0,0]

[1,0,0]

v3 = [1,1,0]

[1,1,0]

v4 = [0,1,0]

[0,1,0]

v5 = [0,0,1]

[0,0,1]

v6 = [1,0,1]

[1,0,1]

v7 = [1,1,1]

[1,1,1]

v8 = [0,1,1]

[0,1,1]

 

append vert_array v1

#([0,0,0])

append vert_array v2

#([0,0,0], [1,0,0])

append vert_array v3

#([0,0,0], [1,0,0], [1,1,0])

append vert_array v4

#([0,0,0], [1,0,0], [1,1,0], [0,1,0])

append vert_array v5

#([0,0,0], [1,0,0], [1,1,0], [0,1,0], [0,0,1])

append vert_array v6

#([0,0,0], [1,0,0], [1,1,0], [0,1,0], [0,0,1], [1,0,1])

append vert_array v7

#([0,0,0], [1,0,0], [1,1,0], [0,1,0], [0,0,1], [1,0,1], [1,1,1])

append vert_array v8

#([0,0,0], [1,0,0], [1,1,0], [0,1,0], [0,0,1], [1,0,1], [1,1,1], [0,1,1])

 

append face_array [1,4,3]

#([1,4,3])

append face_array [3,2,1]

#([1,4,3], [3,2,1])

append face_array [1,2,6]

#([1,4,3], [3,2,1], [1,2,6])

append face_array [6,5,1]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1])

append face_array [2,3,7]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7])

append face_array [7,6,2]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2])

append face_array [3,4,8]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2], [3,4,8])

append face_array [8,7,3]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2], [3,4,8], [8,7,3])

append face_array [4,1,5]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2], [3,4,8], [8,7,3], [4,1,5])

append face_array [5,8,4]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2], [3,4,8], [8,7,3], [4,1,5], [5,8,4])

append face_array [5,6,7]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2], [3,4,8], [8,7,3], [4,1,5], [5,8,4], [5,6,7])

append face_array [7,8,5]

#([1,4,3], [3,2,1], [1,2,6], [6,5,1], [2,3,7], [7,6,2], [3,4,8], [8,7,3], [4,1,5], [5,8,4], [5,6,7], [7,8,5])

 

m = mesh vertices:vert_array faces:face_array

$Editable_Mesh:Object03 @ [0.000000,0.000000,0.000000]

 

no i niestety efekt nie jest w pełni zadowaljący - na dwóch przeciwległych ściankach pojawiają się krawędzie ścianek, jakby nie były połączone:

 

boxpc4ui.jpg

boxp02c4hy.jpg

 

jaki błąd popełniłem w skrypcie?

z góry dziękuję

  • Odpowiedzi 2
  • Wyświetleń 1,8k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

Napisałem to od nowa po swojemu układając vertexy i face'y, gdyż w ten sposób szybciej mogłem wprowadzić dane których u Ciebie brakuje

vert_array = #()
face_array = #()

append vert_array [0,0,0]
append vert_array [0,1,0]
append vert_array [1,0,0]
append vert_array [1,1,0]
append vert_array [0,0,1]
append vert_array [0,1,1]
append vert_array [1,0,1]
append vert_array [1,1,1]

append face_array [2,3,1]
append face_array [3,2,4]
append face_array [5,2,1]
append face_array [2,5,6]
append face_array [6,4,2]
append face_array [4,6,8]
append face_array [8,3,4]
append face_array [3,8,7]
append face_array [7,1,3]
append face_array [1,7,5]
append face_array [7,6,5]
append face_array [6,7,8]

sgroup_array = #(1,1,2,2,4,4,8,8,16,16,32,32)

nowy = mesh vertices:vert_array faces:face_array

for f = 1 to 12 do
(
setFaceSmoothGroup nowy f sgroup_array[f]
setEdgeVis nowy f 1 false
setEdgeVis nowy f 2 true
setEdgeVis nowy f 3 true
)
update nowy

Rzeczy, których u Ciebie brakuje, to te, które odbywają się w pętli 'for'

 

Muszisz jeszcze oprócz tworzenia mesh'a zdefiniować dla każdego face'a smoothing group do jakiej ma należeć:

setFaceSmoothGroup nowy f sgroup_array[f]

 

Do których grup sg należy face, definiuje się za pomocą 32-bitowych (tyle jest grup sg) liczb binarnych. Stąd w tablicy kolejne potęgi dwójki.

Np. liczba 8 (binarnie 1000) oznacza, że face należy do 4 grupy SG

liczba 13 (1101) oznacza, że face należy do grup: 1,3,4

 

dodatkowo te linie:

setEdgeVis nowy f 1 false

setEdgeVis nowy f 2 true

setEdgeVis nowy f 3 true

pozwalają na ukrycie edge, które są na przekątnych poly.

Wlaśnie dlatego stworzyłem bryłę po swojemu, gdyż u Ciebie pewnie musiałbym inaczej dobierać, które krawędzie ukrywać, a które nie.

 

Ja się zbytnoi na tym nie znam ale wydaje mi się, że to jest problemem.

Jeśli się mylę, lechoo na pewno mnie skoryguje ;)

 

***EDIT***

Przejrzałem dokładniej Twój schemat tworzenia bryły i jest tam trzymanie się algorytmu podobnie jak u mnie więc cały ten mój wykład ogranicza się do tego, abyś po linii "m = mesh vertices:vert_array faces:face_array" w swoim skrypcie dodał coś takiego:

sgroup_array = #(1,1,2,2,4,4,8,8,16,16,32,32)
for f = 1 to 12 do
(
setFaceSmoothGroup m f sgroup_array[f]
setEdgeVis m f 1 true
setEdgeVis m f 2 true
setEdgeVis m f 3 false
)
update m

Teraz nadanie grup SG na box'a jeszcze ujdzie, ale w dalszym zastosowaniu staje się nieco uciążliwe?

Możesz się oddać w ręce automatu. Zamiast tego, co podałem wyżej, wstaw to:

addmodifier m (Smooth autosmooth:true threshold:30)
convertToMesh(m)
update m

parametrem threshold decydujesz, kiedy face'y dostaną te same a kiedy różne grupy SG, po szczegóły już odeślę do help'a bo i tak rozpisałem się tutaj ponad norme ;)

Napisano
  • Autor

wielkie dzieki :) juz wszystko dziala

 

i ta druga wersja jest jak narazie dla mnie lepsza - nie ma bledow, bo pierwsza mi tylko czesc siatki wygladzala :)

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.