blender3d.cz http://forum.blender3d.cz/ |
|
Průsečík dvou edges? http://forum.blender3d.cz/viewtopic.php?f=6&t=5552 |
Stránka 1 z 2 |
Autor: | zdendos [ úte úno 12, 2008 12:00 am ] |
Předmět příspěvku: | Průsečík dvou edges? |
Měl bych takový malý dotaz ohledně průsečíku dvou edges. Existuje v Blenderu nějaká fce nebo postup, jak to realizovat? |
Autor: | Alfisko [ úte úno 12, 2008 4:48 pm ] |
Předmět příspěvku: | |
popravde receno jsem nepochopil co tim myslis? rekl jsi, ze mas problem ohledne neceho, ale nedefinoval jsi problem |
Autor: | zdendos [ úte úno 12, 2008 9:02 pm ] |
Předmět příspěvku: | |
Ale řekl.. Potřebuji vytvořit průsečík (bod) dvou edges (přímek), které se kříží. Jak na to? Je v blenderu nějaká fce a nebo je na to nějaký postup? |
Autor: | kareem [ úte úno 12, 2008 9:18 pm ] |
Předmět příspěvku: | |
Myslím že žádná taková fce v blenderu není, řekl bych, že v tomto případě pomůže akorát knife (k). A nebo můžeš zkusit něco naprogramovat v pythonu. |
Autor: | zdendos [ úte úno 12, 2008 10:46 pm ] |
Předmět příspěvku: | |
Tak to něco málo už v pythonu mám... Je to stále rozpracované... Kód: # Autor: Zdenek Koukol, (c) ZDENDOS COMPANY 2008
# ---------------------------------------------- # Fce najde prusecik dvou edges # Testovano v Blender v 2.44 a 2.45 # Ver: 0.2 import Blender if (Blender.Get("version") != 244) and (Blender.Get("version") != 245): print "Warning: Pro tuto verzi Blenderu nebyl script testovan." objekty = Blender.Object.GetSelected() if (len(objekty) != 1): print "Error: Vyberte pouze jeden objekt!" else: objekt = objekty[0] if objekt.type != "Mesh": print "Error: Vyberte objekt typu MESH!" else: muj_mesh = objekt.getData() if Blender.Window.EditMode(): print "Error: Nesmis byt v editacnim modu!" else: vybrane_usecky = [] for usecka in muj_mesh.edges[:]: if (usecka.flag & 0x01): vybrane_usecky.append(usecka) if (len(vybrane_usecky) != 2): print "Error: Musis mit vybrany dve edges!" else: bodA = vybrane_usecky[0].v1 bodB = vybrane_usecky[0].v2 bodC = vybrane_usecky[1].v1 bodD = vybrane_usecky[1].v2 t = 0.0 s = 0.0 xE = 0.0 yE = 0.0 yE = 0.0 xF = 0.0 yF = 0.0 yF = 0.0 xA = (bodA.co[0]) yA = (bodA.co[1]) zA = (bodA.co[2]) xB = (bodB.co[0]) yB = (bodB.co[1]) zB = (bodB.co[2]) xC = (bodC.co[0]) yC = (bodC.co[1]) zC = (bodC.co[2]) xD = (bodD.co[0]) yD = (bodD.co[1]) zD = (bodD.co[2]) t = (yC*(xD - xC) - yA*(xD - xC) + xA*(yD - yC) - xC*(yD - yC)) / (((yB - yA) * (xD - xC)) - ((xB - xA) * (yD - yC))) s = (xA - xC + t*(xB - xA)) / (xD - xC) xE = xA + t*(xB - xA) yE = yA + t*(yB - yA) zE = zA + t*(zB - zA) xF = xC + s*(xD - xC) yF = yC + s*(yD - yC) zF = zC + s*(zD - zC) bod = Blender.NMesh.Vert(((xE + xF)/2), ((yE + yF)/2), ((zE + zF)/2)) muj_mesh.verts.extend([bod]) muj_mesh.update() |
Autor: | zdendos [ úte úno 12, 2008 10:47 pm ] |
Předmět příspěvku: | |
Já se hlavně, ptám, zda to má smysl vůbec ten skript dodělat a nebo ne. Ale jelikož v blenderu taková fce není, tak proč ne. |
Autor: | frca [ úte úno 12, 2008 11:49 pm ] |
Předmět příspěvku: | |
V prostoru obecně nemusí průsečík dvou hran existovat. Takže jde spíš o to, najít bod na hraně, který je nejblíž jiné hraně. |
Autor: | xixixao [ úte úno 12, 2008 11:53 pm ] |
Předmět příspěvku: | |
Nemusíš, ale pokud používáš "ctrl" při hýbání s vertexy apod., není to zas tak nepravděpodobné... |
Autor: | frca [ stř úno 13, 2008 12:02 am ] |
Předmět příspěvku: | |
Problém je i v tom, že přesnost souřadnic je konečná a pokud nemají jednu souřadnici vyloženě společnou, tak je velká pravděpodobnost, že tam průsečík není -> zjišťování průsečíku povede opět na problém nejbližšího bodu. |
Autor: | zdendos [ stř úno 13, 2008 12:48 am ] |
Předmět příspěvku: | |
Ale to by zase tolik nevadilo, kdyby se tento průsečík promítl do jedné z nich a tuto křivku by rozdělil (i kdyby to nebyl skutečný průsečík) |
Autor: | vklidu [ stř úno 13, 2008 10:58 am ] |
Předmět příspěvku: | |
nehledate toto? Tutorial http://www.hybird.org/~guiea_7/ Script http://blenderartists.org/forum/showthr ... light=geom |
Autor: | zdendos [ stř úno 13, 2008 6:31 pm ] |
Předmět příspěvku: | |
Hm, zatím to vypadá podle ukázek velmi dobře... |
Autor: | zdendos [ čtv úno 14, 2008 6:37 pm ] |
Předmět příspěvku: | |
Tak skript jsem nainstaloval... Ale nějak jsem nepříšel, jak ho aktivovat... |
Autor: | vklidu [ pát úno 15, 2008 2:05 pm ] |
Předmět příspěvku: | |
bohuzel nemam se scriptem zadnou zkusenost, jen jsem nasel toto info asi pred rokem na webu (mozna jede jen s nejakou starsi verzi? netusim) |
Autor: | zdendos [ sob úno 16, 2008 10:53 pm ] |
Předmět příspěvku: | |
Hm, porad na to nejak nemohu prijit. Tak stale vyuzivam svuj skript... Tam jsem jsi jist... |
Stránka 1 z 2 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |