Operowanie światłem w widoku części.

Polish forum

Moderators: PrzemoF, kaktus

Forum rules
Regulamin forum i pomocne informacje

WAŻNE! Przeczytaj zanim poprosisz o pomoc
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Operowanie światłem w widoku części.

Post by matyk »

Szykuję materiały z aktualnym tematem, na zajęcia z geometrii.
Tak wygląda zwykły widok. Moim zdaniem jest zbyt ciemny.
Tak wygląda zwykły widok. Moim zdaniem jest zbyt ciemny.
serce_.jpg (17.54 KiB) Viewed 1803 times
.
Tak wygląda poprzedni widok, doświetlony punktowym światłem (PointLight) z dodatku Render.
Tak wygląda poprzedni widok, doświetlony punktowym światłem (PointLight) z dodatku Render.
serce_o.jpg (20.97 KiB) Viewed 1803 times

Być może jest sposób na rozświetlenie sceny bez użycia specjalnych dodatków, ale go nie znam.

Chętnie bym powitał w programie FreeCad suwaki, takie jakie są w GeoGebrze.
Myślę, że szybka zmiana wymiarów, za pomocą suwaków, to by była przydatna opcja.
Skoro jest to program parametryczny, to powinien mieć możliwość szybkiego ich przestawiania.
User avatar
NewJoker
Veteran
Posts: 3017
Joined: Sun Oct 11, 2020 7:49 pm

Re: Operowanie światłem w widoku części.

Post by NewJoker »

Wersja Realthundera (https://github.com/realthunder/FreeCAD/releases) ma znacznie usprawnione oświetlenie modeli.
User avatar
kaktus
Veteran
Posts: 1174
Joined: Sun Aug 11, 2019 11:59 am
Location: opolskie
Contact:

Re: Operowanie światłem w widoku części.

Post by kaktus »

Hej. :D


Przychodzi mi na myśl środowisko pracy Raytracing. Czy już je testowałeś to tych zastosowań :?:
Twórca polskiej wersji Wiki dla FreeCAD, współwórca polskiej wersji GUI.
"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest".
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Operowanie światłem w widoku części.

Post by matyk »

Czołem :)
kaktus wrote: Mon Feb 13, 2023 5:23 am Przychodzi mi na myśl środowisko pracy Raytracing. Czy już je testowałeś to tych zastosowań :?:
Próbowałem, ale zniechęcił mnie taki komunikat :)
Zrzut ekranu 1.jpg
Zrzut ekranu 1.jpg (47.63 KiB) Viewed 1573 times
Do banalnego doświetlenia sceny, nie będę specjalnie uczył się nowego dodatku.
Render oferuje proste i intuicyjne doświetlanie.

P.S.
Nie chcę mnożyć wątków, więc dodam mój problem tutaj.
Zainstalowałem najnowszą wersję FC i prawidłowo zaznaczone kąty przesuwa mi teraz do początku układu.
Zrzut ekranu 2.jpg
Zrzut ekranu 2.jpg (27.54 KiB) Viewed 1573 times

Code: Select all

OS: Windows 10 Version 2009
Word size of FreeCAD: 64-bit
Version: 0.20.2.29177 +426 (Git)
Build type: Release
Branch: (HEAD detached from 0.20.2)
Hash: 930dd9a76203a3260b1e6256c70c1c3cad8c5cb8
Python 3.8.10, Qt 5.15.2, Coin 4.0.1, Vtk 8.2.0, OCC 7.6.3
Locale: Polish/Poland (pl_PL)
Installed mods: 
  * Curves 0.6.5
  * fcgear 1.0.0
  * Help 1.0.3
  * Render 2022.4.0
  * WebTools
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: Operowanie światłem w widoku części.

Post by kwahoo »

matyk wrote: Mon Feb 13, 2023 11:09 am
Do banalnego doświetlenia sceny, nie będę specjalnie uczył się nowego dodatku.
Render oferuje proste i intuicyjne doświetlanie.
Spróbuj też:

Code: Select all

light = coin.SoDirectionalLight()
light.direction.setValue(-1.0, -1.0, -1.0) # kierunek swiatla -1.0 do 1.0
light.intensity.setValue(1.0) # intensywnosc swiatla 0 do 1.0
light.color.setValue(0.8, 0.8 ,1.0) # kolor swiatla 0 do 1.0, czerwony, zielony, niebieski
for obj in FreeCAD.ActiveDocument.Objects:
  if obj.ViewObject.Visibility:
    obj.ViewObject.RootNode.insertChild(light, 2)
Image
Image
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Operowanie światłem w widoku części.

Post by matyk »

Dziękuję za skrypt do makro.
Bryła została doświetlona, ale powierzchnie trójkątów jak widać nie.
sw3a.jpg
sw3a.jpg (50.57 KiB) Viewed 1463 times
Pewnie dlatego, że źle dobrałem kierunek oświetlania.
Muszę to rozpracować i sprawdzić.
Zastanawiam się nad tym, czy warto zrobić makro z oświetleniem obrotowym dookoła wybranej osi.
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: Operowanie światłem w widoku części.

Post by kwahoo »

Kierunek światła możesz zmienić, zmienia-jąć tylko tę linijkę

Code: Select all

light.direction.setValue(-1.0, -1.0, -1.0) # kierunek swiatla -1.0 do 1.0
Makro z obrotowym światłem? Znaczy taką animację? Czy jakiś suwak do wygodnego ustawiania?
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Operowanie światłem w widoku części.

Post by matyk »

Tego się domysliłem i wypróbowałem różne kombinacje +- 1, ale bez pozytywnego skutku. Muszę zadziałać precyzyjniej.

Czy obrót światła dookoła osi Z, da się tak zrobić ?
light.direction.setValue(1.0*sin(t), 1.0*cos(t), 0)

t- parametr
-pi<t<pi

To obojętne, czy animacja, czy suwak.
Chodzi o ciągłą obserwację nieruchomej sceny, przy różnych kierunkach doświetlenia.
Last edited by matyk on Wed Feb 15, 2023 4:38 pm, edited 1 time in total.
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: Operowanie światłem w widoku części.

Post by kwahoo »

matyk wrote: Wed Feb 15, 2023 4:25 pm Tego się domysliłem i wypróbowałem różne kombinacje +- 1, ale bez pozytywnego skutku. Muszę zadziałać precyzyjniej.

Czy obrót światła dookoła osi Z, da się tak zrobić ?
light.direction.setValue(1.0*sin(t), 1.0*cos(t), 0)

t- parametr
Tak, musisz tylko zaimportować moduł math, żeby zadziałało.

Code: Select all

import math
t = 2 # wartosc w radianach
light.direction.setValue(math.sin(t), math.cos(t), -1.0)
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Operowanie światłem w widoku części.

Post by matyk »

kwahoo wrote: Wed Feb 15, 2023 4:37 pm Tak, musisz tylko zaimportować moduł math, żeby zadziałało.
Dla jednej wartości t zadziałało, dziękuję.

Chciałem ustawić obrotowe oświetlenie w pętli i nie pokazuje się ono dla wszystkich wartości t, tylko ostatniej.
Słabo się znam na pisaniu skryptów i działając na wyczucie, robię pewnie jakiś podstawowy błąd.

Taki skrypt wykombinowałem:

Code: Select all

import math
import time
for k in range(0, 21)  : #wybor 
    t = k*0.1 # wartosc w radianach
    time.sleep(1)
    light = coin.SoDirectionalLight()
    light.direction.setValue(math.sin(t), math.cos(t), -1.0)
    light.intensity.setValue(1.0) # intensywnosc swiatla 0 do 1.0
    light.color.setValue(0.8, 0.8 ,1.0) # kolor swiatla 0 do 1.0, czerwony, zielony, niebieski
    for obj in FreeCAD.ActiveDocument.Objects:
        if obj.ViewObject.Visibility:
           obj.ViewObject.RootNode.insertChild(light, 2)

Post Reply