An-Cadsolutions      Imgsystems

Kirjoittaja Aihe: 3dsmax: point3 to float??  (Luettu 1782 kertaa)

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
3dsmax: point3 to float??
« : Toukokuu 04, 2007, 12:51:50 pm »
Onko kellään hajua miten voisin wirettää (huom. ei script) point3-muotoisen arvon x,y tai z-komponentteja floattiin.

Eli yritän saada ffd-boxin control pointeja wiretettyä helpperiin kiinni, muttakun se perkele on point3-formaatissa.
olen saanut vastaavan toimimaan toisinpäin, mutta en näin päin...

anyone?
« Viimeksi muokattu: Elokuu 31, 2008, 01:59:47 am kirjoittanut xcx »

xcx

  • Administrator
  • *****
  • Viestejä: 2301
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: point3 to float??
« Vastaus #1 : Toukokuu 04, 2007, 01:22:35 pm »
Ei noin helpolla pääse :)

FFD Control pointit eivät ensinnäkään näy ennen kuin olet luonut niille yhden tai enemmän keyframeja, koska ne on controllerita. Lisäksi ne on tyypiltään bezier eli ne vaativat Point3 tyyppisen luvun. Voit pistää point obulle position controlleriksi bezier tyypin jolloin voit wirettää cp:n ja pointin paikan. Toinen ongelma on että CP:t haluvat paikkansa relaativisesti alkuperäiseen paikkaansa. Eli wiretys tuottaa aivan vääriä tuloksia. Scriptaaaaa ;D
Senior Technical Artist - Remedy Games
http://www.verajankorva.com

Tak

  • Administrator
  • *****
  • Viestejä: 960
  • Sukupuoli: Mies
    • Profiili
Vs: point3 to float??
« Vastaus #2 : Toukokuu 04, 2007, 01:25:23 pm »
Koita jos tätä kautta saisit ladattua siihen tarkoitetun scriptin
Voi olla että vaatii rekisteröitymistä, mutta kerro jos ei onnistu.

Tak

  • Administrator
  • *****
  • Viestejä: 960
  • Sukupuoli: Mies
    • Profiili
Vs: point3 to float??
« Vastaus #3 : Toukokuu 04, 2007, 01:38:24 pm »
Kommentit japaniks joten osa näkyy )"/=%/#=)(¤!", mutta ite scripti pitäis olla ihan ehjä :)

Koodia: [Valitse]
-- FFD2HelperWire --
-- by u.m.i.
-- May.5.2003

-- FFD ƒRƒ“ƒgƒ[ƒ‹ƒ|ƒCƒ“ƒg(CP)‚ŖƒƒCƒ„ƒŠƒ“ƒO‚³‚ꂽƒ|ƒCƒ“ƒgƒwƒ‹ƒp[‚šŽ©“®¶¬‚µ‚Ü‚·B

-- ƒCƒ“ƒXƒg[ƒ‹ --
-- ƒXƒNƒŠƒvƒgƒƒjƒ…[‚©‚ēˆź“xŽĄs‚·‚é‚ʁAƒJƒXƒ^ƒ}ƒCƒY‚Ģ"UMItools"‚ĢƒJƒeƒSƒŠ[‚É“o˜^‚³‚ź‚Ü‚·BƒNƒ@ƒbƒhƒƒjƒ…[‚Ȃǂɓo˜^‚µ‚Ä‚­‚¾‚³‚¢B

-- Žg—p–@ --
-- FFDƒ‚ƒfƒBƒtƒ@ƒCƒ„(5Žķ—ނɑΉž)‚šAC³ƒpƒlƒ‹‚Å‘I‘š‚µ‚Ü‚·B
-- "FFD to Helper Wire"‚š‹N“®‚µ‚Ü‚·B
-- ƒƒCƒ„ƒŠƒ“ƒO‚ÅŽÆ•Ź‚Å‚«‚é‚ꂤ‚ɁAFFD ‚̐V‚µ‚¢–¼‘O‚š“ü—Ķ‚µ‚Ü‚·BƒfƒtƒHƒ‹ƒg‚ŁƒŒ³‚Ģ–¼‘O„{"wired"‚Å‚·B
-- V‹K‚Éģ¬‚³‚ź‚éƒwƒ‹ƒp[‚Ģ–¼‘O‚š“ü—Ķ‚µ‚Ü‚·BiCP‚ĢƒCƒ“ƒfƒbƒNƒX‚ŖÅŒć‚ÉŽ©“®‚Å•t‚«‚Ü‚·)
-- ƒwƒ‹ƒp[‚šŒ³‚Ģ(FFD‚Ŗ“K—p‚³‚ꂽ)ƒIƒuƒWƒFƒNƒg‚ɐeŽqƒŠƒ“ƒN‚·‚éƒIƒvƒVƒ‡ƒ“‚šŽw’肵‚Ü‚·B
-- "--- Make wired Helper ---"ƒ{ƒ^ƒ“‚šƒNƒŠƒbƒN‚µ‚Ü‚·B
-- ‚»‚ꂼ‚ź‚ĢCP‚ŖƒƒCƒ„ƒŠƒ“ƒO‚³‚ꂽƒ|ƒCƒ“ƒgƒwƒ‹ƒp[‚ŖŽ©“®“I‚Éģ¬‚³‚ź‚Ü‚·B
-- FFDƒ‚ƒfƒBƒtƒ@ƒCƒ„‚Ģ–¼‘O‚šˆČŒć•ĻX‚µ‚Ă͂¢‚Æ‚Č‚¢A‚Ę‚¢‚¤’ˆÓ‚Ŗ•\ަ‚³‚ź‚Ü‚·B
-- ƒwƒ‹ƒp[‚š“®‚©‚·‚ĘFFD‚ĢCP‚Ŗ“®‚«‚Ü‚·BCP‚𒼐ړ®‚©‚·‚±‚Ƃ͂ł«‚Ü‚¹‚ńB
-- ’ˆÓAŽg—p‘O‚ÉCP‚ɃAƒjƒ[ƒVƒ‡ƒ“‚š‚Ā‚Æ‚Ä‚¢‚½ź‡‚́A‘S‚ÄŽø‚ķ‚ź‚Ü‚·B

-- ’ˆÓ !!! --
-- max 5.1 ‰pŒźƒo[ƒWƒ‡ƒ“‚Å‚Ģ‚ŻƒeƒXƒg‚µ‚Ä‚¢‚Ü‚·B
-- ‚»‚Ģ‘¼‚ĢŠĀ‹«‚Å‚Ķƒpƒ‰ƒ[ƒ^ƒƒCƒ„ƒŠƒ“ƒO‚ĢƒGƒ‰[‚Ŗ”­¶‚·‚é‰Ā”\«‚Ŗ‚ ‚č‚Ü‚·B
-- ‚»‚Ģź‡AƒGƒ‰[‚ĶCP‚̐”‚Ę“Æ‚¶‚¾‚Æ”­¶‚·‚é‚̂ŁA
-- FFD 2x2x2 (CP‚Ķ8ŒĀ‚ōŏ¬)‚ŃeƒXƒg‚µ‚Ă݂Ă­‚¾‚³‚¢B
--
-- ‚±‚ĢƒGƒ‰[‚́A‚±‚ĢƒXƒNƒŠƒvƒg‚ŖŒ“ˆö‚ł͂ ‚č‚Ü‚¹‚ń‚ŖA
-- ‚±‚ĢƒXƒNƒŠƒvƒg‚Ő¶¬‚µ‚Ä‚¢‚éƒpƒ‰ƒ[ƒ^ƒƒCƒ„ƒŠƒ“ƒO‚ĢƒXƒNƒŠƒvƒgƒ\[ƒX•”•Ŗ‚š•ĻX‚·‚邱‚Ƃʼnń”š‚Å‚«‚é‚©‚ą‚µ‚ź‚Ü‚¹‚ńB
-- "--‚±‚±‚Ķ max ‚Ģƒo[ƒWƒ‡ƒ“‚ÉˆĖ‘¶‚·‚é‚©‚ą"‚Ę‚¢‚¤ƒRƒƒ“ƒg‚̋ߕӂš•ĻX‚µ‚Ă݂Ă­‚¾‚³‚¢B
-- ‰üsƒR[ƒh‚Ģ"\n" ‚šA "\r\n"  ";\n"  ";\r\n" ‚Ȃǂɕς¦‚é‚Ę‰šŒˆ‚·‚é‚©‚ą‚µ‚ź‚Ü‚¹‚ńB
-- ‚½‚¾‚µA‚¤‚Ü‚­‚¢‚­‚±‚Ę‚š•Ūį‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ńB

macroscript FFD2HelperWire
category:"UMItools"
tooltip:"FFD to Helper wire"
buttontext:"FFD2HelperWire"
(
local ffdMod -- <modifier> FFDBox,FFDCyl,FFD_4x4x4,FFD_3x3x3 or FFD_2x2x2 ‚̂ǂꂩ
local obj -- <node> FFD‚Ŗ“K—p‚³‚ź‚Ä‚¢‚éƒIƒuƒWƒFƒNƒgB

-- ƒIƒuƒWƒFƒNƒg‚šˆų”‚ÉŽę‚čA‚»‚ꂪFFD(‚ĢˆźŽķ)‚¾‚Į‚½‚ēture‚š‚©‚¦‚µ‚Ü‚·B
-- isEnabled ‚ÅŽg‚Į‚Ă邾‚Ƃł·B‘¼‚Å‚ąŽg‚¤‚©‚ȁ[‚ĘŽv‚Į‚½‚Æ‚ĒAŒ‹‹ĒŽg‚ķ‚Č‚©‚Į‚½B
-- ƒR[ƒh‚ŖŒ©‚ā‚·‚­‚Č‚é‚̂ŁAŠÖ”‚̂܂܂ɂµ‚Ă܂·B
fn isFFD mod =
(
case classOf mod of
(FFDBox:true; FFDCyl:true; FFD_4x4x4:true; FFD_3x3x3:true; FFD_2x2x2:true; default:false)
)

-- FFD CP‚́Aƒ[ƒ‹ƒhĄ•W‚š•Ō‚·B
-- ƒ|ƒCƒ“ƒgƒwƒ‹ƒp[‚šģ‚é‚Ę‚«‚ɁA‚±‚ĢŠÖ”‚Åģ¬ˆŹ’u‚šŽę“¾‚µ‚Ü‚·B
-- ˆų”
----<node>obj --FFD‚Ŗ“K—p‚³‚ź‚Ä‚¢‚éƒIƒuƒWƒFƒNƒgB–ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽFFD‚¾‚ʁAŠī€‚ɂȂéƒIƒuƒWƒFƒNƒg‚š“Į’č‚·‚é•K—v‚Ŗ‚ ‚é‚̂ŁB
----<modifier:FFD>ffd --FFD(5Žķ‚Ģ‚¤‚æ1Žķ)B
----<integer>idx --CP‚ĢƒCƒ“ƒfƒbƒNƒXB
-- !!!!ˆų”‚ĢŒ^ƒ`ƒFƒbƒN‚ʁAƒCƒ“ƒfƒbƒNƒX‚Ģ”ĶˆĶƒ`ƒFƒbƒN‚Ķ‚µ‚Ă܂¹‚ń!!!!
-- return <point3> --ƒ[ƒ‹ƒhĄ•W‚Å‚ĢCPˆŹ’u‚š•Ō‚µ‚Ü‚·B
fn getCPWorldPos obj ffd idx =
(-- ‚±‚ĢƒR[ƒh‚ĶƒXƒNƒŠƒvƒgƒŠƒtƒ@ƒŒƒ“ƒX‚ĢƒpƒNƒŠ‚Å‚·B
local cpPosL = ffd["Master"][idx].value
local objTM = obj.objectTransform
local modTM = ( getModContextTM obj ffd) * ffd.lattice_transform.value
local modBBMin = getModContextBBoxMin obj ffd
local modBBMax = getModContextBBoxMax obj ffd
(modBBMin + cpPosL * (modBBMax - modBBMin)) * (inverse modTM) * objTM
)

-- ffdMod == undefined ‚́A“ńd‹N“®–hŽ~‚Å‚·B
on isEnabled do ffdMod == undefined and (isFFD (modPanel.getCurrentObject()))

rollout rollMain "FFD to Helper wier"
(
label lab1 "CAUTION !"
label lab2 "Any animation of CP will be LOST !"
label lab3 "Please name FFD as unique in modifier list." offset:[0,8] align:#left
editText etFFDName "FFD:" text:(ffdMod.name + "_wired") fieldWidth:160 align:#right
label lab4 "Please input helper's name prefix." align:#left offset:[0,8]
editText etHelperName "Helpers:" text:(obj.name + "_FFD_CP_") fieldWidth:160 align:#right
checkbox chAutoLink "Link Helper to Master Object" checked:true align:#center offset:[0,8]
button btnMake "--- Make Wiered Helper ---" width:220 height:25 offset:[0,8]

on btnMake pressed do -- ‚±‚±‚Å‘S‚Ä‚Ģˆ—‚š‚ā‚Į‚Ă܂·B
(
-- ƒ‚ƒfƒBƒtƒ@ƒCƒ„ƒXƒ^ƒbƒN‚Å(V‚µ‚¢)–¼‘O‚Ŗƒ_ƒu‚Į‚ĂȂ¢‚©ƒ`ƒFƒbƒNB
for i in obj.modifiers do
(
if i.name == etFFDName.text then
(
messageBox "The name of FFD is already used !" title:"Error"
return false
)
)

local MPC = ffdMod[#Master] --(ƒAƒNƒZƒX‚µ‚ā‚·‚¢‚ꂤ‚É)ƒ}ƒXƒ^[ƒ|ƒCƒ“ƒgƒRƒ“ƒgƒ[ƒ‰‚šŽę“¾B
local numCP = case classOf ffdMod of -- CP‚̐”‚šŽę“¾B–MCP.numSubs‚¾‚Ę•s³‚Č’l‚š•Ō‚µ‚Ü‚·B
(
FFDBox:(local dim = getDimensions ffdMod; dim.x * dim.y * dim.z)
FFDCyl:(local dim = getDimensions ffdMod; dim.x * dim.y * dim.z)
FFD_4x4x4:64
FFD_3x3x3:27
FFD_2x2x2:8
)

-- CP‚Ŗ‚·‚łɃƒCƒ„ƒŠƒ“ƒO‚³‚ź‚Ä‚¢‚é‚Ę‚«‚͉½‚ą‚µ‚Ü‚¹‚ńB
-- ƒƒCƒ„ƒŠƒ“ƒO‚³‚ź‚ĂȂ¢‚ą‚Ģ‚¾‚ƂɐV‚µ‚­ƒwƒ‹ƒp[‚šģ‚Į‚Ä‚ą‚¢‚¢‚©‚ąB
-- ‚ß‚ń‚Ē‚­‚³‚¢‚̂łā‚č‚Ü‚¹‚ń‚ŖB
for i = 1 to numCP do
(
if classOf MPC[i].controller == Point3_Wire then
(
messageBox ("CP "+(i as string)+" is already wired !") title:"Error"
destroyDialog rollMain
return false
)
)

ffdMod.name = etFFDName.text -- FFD‚Ģ–¼‘O‚šŻ’č
local pt = createInstance Point -- ƒwƒ‹ƒp[‚ĶƒCƒ“ƒXƒ^ƒ“ƒX‚É‚µ‚Ü‚µ‚½BŒć‚Å’²®‚ŖŠy‚Ȃ̂ŁB

-- ‚±‚±‚ŖƒJƒiƒ‚Å‚·B
for i = 1 to numCP do -- ‘SCPƒ‹[ƒv
(
-- CP‚šƒAƒjƒ[ƒg‚µ‚Ü‚·B–‚»‚¤‚µ‚Č‚¢‚ĘƒRƒ“ƒgƒ[ƒ‰‚ɃAƒNƒZƒX‚Å‚«‚Č‚¢‚̂ŁB
if MPC[i].controller == undefined then animateVertex ffdMod i
-- ƒ|ƒCƒ“ƒgƒwƒ‹ƒp[(ƒm[ƒh)‚šģ‚Į‚āAˆŹ’u‚š‰ŠśŻ’肵‚Ü‚·B
-- ˆŹ’u‚́Ać‚Å’č‹`‚µ‚Ä‚é getCPWorldPos ŠÖ”‚ÅŽę“¾‚µ‚Ü‚·B
local hlp = point\
name:(etHelperName.text + (if i<10 then "0" else "") + ((i as integer) as string))\
pos:(getCPWorldPos obj ffdMod i) \
wireColor:(-obj.wireColor + white) -- Œ³ƒIƒuƒWƒFƒNƒg‚ĢƒƒCƒ„[ƒJƒ‰[‚𔽓]‚µ‚½F‚É‚µ‚Ü‚·B•Ź‚ÉD‚«‚ȐF‚É‚µ‚Ä‚ą‚ē‚Į‚Ä‚¢‚¢‚Å‚·B
replaceInstances hlp.baseObject pt -- ƒwƒ‹ƒp[‚šƒCƒ“ƒXƒ^ƒ“ƒX‚É‚µ‚Ü‚·B

-- ‚±‚Į‚©‚ēƒƒCƒ„ƒŠƒ“ƒOB
local hlpHdl = hlp.inode.handle -- ƒwƒ‹ƒp[‚Ģ–¼‘O‚š•ĻX‚µ‚Ä‚ą‚¢‚¢‚ꂤ‚ɁAƒm[ƒhƒnƒ“ƒhƒ‹‚šŽę“¾B
local thisHdl = obj.inode.handle -- “Æ‚¶‚­Œ³‚ĢƒIƒuƒWƒFƒNƒg‚ąƒnƒ“ƒhƒ‹‚ŒǐՁB
local ss = stringStream "" -- string ‚Ģ"+"‚ā"append"‚ę‚čA"format"‚šŽg‚¤‚Ł‚¤‚ŖD‚«B
-------------------------------------------------------------------------
----------------------‚±‚±‚Ķ max ‚Ģƒo[ƒWƒ‡ƒ“‚ÉˆĖ‘¶‚·‚é‚©‚ą-------------------------
-------------------------------------------------------------------------
-- ‘åŽG”c‚ÉŒ¾‚¤‚ʁA‚±‚±‚ĢƒR[ƒh‚Ķć‚Ģ getCPWorldPos ‚Ģ‹t‰‰ŽZ‚Å‚·B
-- local nl = ";\r\n" -- –{—ˆ‚Ķ‚±‚ꂪ³‚µ‚¢‰üsB‚Å‚ąƒGƒ‰[‚ɂȂĮ‚½B
local nl = "\n" -- ‚±‚ꂾ‚ʁAƒ_ƒCƒAƒƒO“ą‚Å‚Ķ(Œ©‚½–Ś)‰üs‚³‚ź‚Č‚¢‚Å‚·B
format "obj = maxOps.getNodeByHandle %%" hlpHdl nl to:ss
format "thisObj = maxOps.getNodeByHandle %%" thisHdl nl to:ss
format "ffd = thisObj.modifiers[\"%\"]%" ffdMod.name nl to:ss -- ƒpƒ‰ƒ[ƒ^ƒƒCƒ„ƒŠƒ“ƒO‚́A"Ž©•ŖŽ©g"‚šŽę“¾‚Å‚«‚Č‚¢‚̂ŁA‚µ‚©‚½‚Č‚­–¼‘O‚Å”»•ʁB
format "objTM = thisObj.objectTransform%" nl to:ss
format "modTM = ( getModContextTM thisObj ffd) * ffd.lattice_transform.value%" nl to:ss
format "modBn = getModContextBBoxMin thisObj ffd%" nl to:ss
format "modBx = getModContextBBoxMax thisObj ffd%" nl to:ss
format "(obj.pos * (inverse objTM) * modTM - modBn) / (modBx - modBn)" to:ss
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
ss = ss as string
-- paramWire.connect ‚́A‚¤‚Ü‚­‚¢‚©‚Č‚¢‚Ę false ‚š•Ō‚·‚炵‚¢B‚Å‚ą‚±‚±‚Ģ if ‚Ķ‚ ‚ń‚Ü‚čˆÓ–”‚Č‚¢‚Å‚·B
if not (paramWire.connect hlp[#transform][1] MPC[i] ss) then exit
if chAutoLink.checked then hlp.parent = obj -- eŽqƒŠƒ“ƒNB
)-- ‘S’ø“_ƒ‹[ƒvI‚ķ‚č

-- FFD‚Ģ–¼‘O‚š•Ļ‚¦‚æ‚Ⴄ‚ĘƒƒCƒ„ƒŠƒ“ƒOę‚šŒ©Žø‚¤‚̂ŁAh•ĻX‚µ‚Č‚¢‚łˁh‚Į‚ÄŒxB
messageBox "Please DON'T change name of FFD any more." title:"Infomation" beep:false
destroyDialog rollMain
)

on rollMain close do ffdMod = undefined -- “ńd‹N“®ƒ`ƒFƒbƒN‚š‚µ‚Ä‚é‚̂ŁAundefined ‚É–ß‚µ‚Ä‚ā‚č‚Ü‚·B
)--END rollout rollMakeWire "Make Wire"
on execute do
(
ffdMod = modPanel.getCurrentObject()
-- ‚±‚±Aobj = selection[1] ‚ł͂¢‚Ƃ܂¹‚ńB
-- C³ƒpƒlƒ‹‚̉ę•eƒAƒCƒRƒ“‚šŽg‚Į‚Ä‚é‚Ę‚«‚ɐH‚¢ˆį‚¢‚Ŗo‚é‚̂ŁB
obj = (refs.dependents ffdMod)[1]
createDialog rollMain width:280 height:210
)--END on execute do
)--END macroscript FFD2Helper

xcx

  • Administrator
  • *****
  • Viestejä: 2301
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: point3 to float??
« Vastaus #4 : Toukokuu 04, 2007, 01:42:39 pm »
Itse asiassa CP:t eivät ovat normalisoidussa latticen spacessa. Siihen on epäilemättä joku järkevä syy, mutta noiden liikuttelu Point helpperillä vaatii vähän monimutkaisempaa koodia. Pelkkä wire ei mitenkään riitä siihen on pakko kirjoittaa vähintään expression mukaan.
Senior Technical Artist - Remedy Games
http://www.verajankorva.com

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
Vs: point3 to float??
« Vastaus #5 : Toukokuu 04, 2007, 02:07:45 pm »
totaa, mites mä liitän ton skriptin siihen helpperiin ja controlpointtiin?
mä oon ihan keila näiden skriptien kanssa  ;D

xcx

  • Administrator
  • *****
  • Viestejä: 2301
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: point3 to float??
« Vastaus #6 : Toukokuu 04, 2007, 02:12:50 pm »
No niin. Joskin jo hiukan turhaa tuon Takin pistämän scriptin jälkeen mutta...

Jos teet scenen laatikko ffd 4x4x4, kaksi point helpperiä
Point01 on piste joka liikuttaa ffd laatikon ekaa pistettä
Point02 on obu jonka transform controlleriin laitetaan tämä expression.

Koodia: [Valitse]
p=$Point01
b=$Box01
dependsOn p
ffd=b.modifiers[1]

cp64posL=ffd.control_point_1

objTM=b.objecttransform
modTM=(getModContextTM b ffd)*ffd.lattice_transform.value

modBBMin=getModContextBBoxMin b ffd
modBBMax=getModContextBBoxMax b ffd

cp64posW=(p.pos * (inverse objTM) * modTM - modBBMin) / (modBBMax - modBBMin)

b.modifiers[1][#master][#control_point_1].value = cp64posW

matrix3 [1,0,0]  [0,1,0] [0,0,1] [-63.0465,-50.3434,-0.675877]

Anyways tuo on vähän hankala setuppaa jos koodit ei ole yhtään tuttuja. Tarvitsee scriptaa jotta tuon voisi tehdä automaattisesti joka ffd obun pisteelle. Uskoakseni tuo Takin postaama scripta tekee tämän saman. En kuitenkaan löytänyt paikkaa mihin tuo japani scripti meni :).
Senior Technical Artist - Remedy Games
http://www.verajankorva.com

xcx

  • Administrator
  • *****
  • Viestejä: 2301
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: point3 to float??
« Vastaus #7 : Toukokuu 04, 2007, 03:40:51 pm »
No niin.

www.verajankorva.com/temp/FFD.avi

Eli anna obulle FFD 4x4x4 modifier. Obu valittuna aja scripti.

Koodia: [Valitse]
-- FFD Points
--
-- www.verajankorva.com

__aCPPoints = #()

/*** Create point helpers for every ffd control point ***/
fn fnCreatePoints _obj =
(
obj = _obj
m = obj.modifiers[1]
if (classof m) != FFD_4X4X4 do
(
messageBox "No FFD modifier found"
return 0
)

animateAll m
iCpCount = m[#master].numSubs
__aCPPoints = #()
for i=1 to iCpCount do
(
p = point()
p.pos = fnGetCpPos obj m i
append __aCPPoints p
)

sScript = stringStream ""
format "dependsOn " to:sScript
for i=1 to __aCPPoints.count do
format "$% " __aCPPoints[i].name to:sScript
format "\n" to:sScript
format "b = $%\n" obj.name to:sScript
format "m = b.modifiers[1]\n" to:sScript
for i=1 to __aCPPoints.count do
format "cp% = m.control_point_%\n" i i to:sScript
format "objTM = b.objectTransform\n" to:sScript
format "modTM = (getModContextTM b m) * m.lattice_transform.value\n" to:sScript
format "modBBMin=getModContextBBoxMin b m\n" to:sScript
format "modBBMax=getModContextBBoxMax b m\n" to:sScript
for i=1 to __aCPPoints.count do
(
format "cp%World = ($%.pos * (inverse objTM) * modTM - modBBMin) / (modBBMax - modBBMin)\n" i __aCPPoints[i].name to:sScript
format "m[#master][#control_point_%].value = cp%World\n" i i to:sScript
)
format "(matrix3 [1,0,0] [0,1,0] [0,0,1] [-1.98109,1.23891,0])\n" to:sScript

p = point()
ts = Transform_Script()
p.transform.controller = ts
ts.script = sScript
)

/*** Get control point position in world space ***/
fn fnGetCpPos _obj _ffd _iCpIndex =
(

cp = _ffd[#master]["control_point_"+(_iCpIndex as string)].value
objTM = _obj.objectTransform
modTM = (getModContextTM _obj _ffd) * _ffd.lattice_transform.value
modBBMin = getModContextBBoxMin _obj _ffd
modBBMax = getModContextBBoxMax _obj _ffd
cpWorld = (modBBMin + (cp * (modBBMax - modBBMin)) * (inverse modTM) * objTM)
return cpWorld
)

fnCreatePoints $

Jos et tiedä miten scriptejä ajetaan niin.

MaxScript->Open Script ja scripti ikkunasta File->Evaluate All
« Viimeksi muokattu: Toukokuu 04, 2007, 03:43:10 pm kirjoittanut xcx »
Senior Technical Artist - Remedy Games
http://www.verajankorva.com

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
Vs: point3 to float??
« Vastaus #8 : Toukokuu 10, 2007, 07:26:02 pm »
mahtavaa, kiitos.
en oo nyt ehtiny kokeilee lähiaikoina mitään, mutta raportoin kun saan jotain aikaseks

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
Vs: point3 to float??
« Vastaus #9 : Toukokuu 15, 2007, 10:22:02 am »
toimii muuten oikeen hyvin, mutta olis parasta jos sais tollasen toimii myös 2x2x2-ffdboxissa, yritin saada tosta koodista pikasesti selvää tässä aamulla töiden ohella, mutta eihän siitä mitään tullut   ;)

xcx

  • Administrator
  • *****
  • Viestejä: 2301
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: point3 to float??
« Vastaus #10 : Toukokuu 15, 2007, 10:26:24 am »
Jos käytät mun kirjoittamaa koodia niin se toimii vain 4x4x4 ffd boxilla. Voisin tunea siitä kyl version mikä toimii myös 2x2x2 ffd boxilla.
Senior Technical Artist - Remedy Games
http://www.verajankorva.com

Tak

  • Administrator
  • *****
  • Viestejä: 960
  • Sukupuoli: Mies
    • Profiili
Vs: point3 to float??
« Vastaus #11 : Toukokuu 15, 2007, 10:51:27 am »
Tuo minkä mä laitoin toimii FFD box-modifierin kanssa eli pisteitä voi olla ihan miten paljon tahansa.

xcx

  • Administrator
  • *****
  • Viestejä: 2301
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: point3 to float??
« Vastaus #12 : Toukokuu 15, 2007, 10:55:34 am »
Minne tuo työkalu menee? Itse kun ajoin sen niin en löytänyt sitä mistään. Se ei valittannut tai mitään, mutta mistään en sitä löytänyt.
Senior Technical Artist - Remedy Games
http://www.verajankorva.com

Tak

  • Administrator
  • *****
  • Viestejä: 960
  • Sukupuoli: Mies
    • Profiili
Vs: point3 to float??
« Vastaus #13 : Toukokuu 15, 2007, 11:04:21 am »
Koodia: [Valitse]
macroscript FFD2HelperWire
category:"UMItools"
tooltip:"FFD to Helper wire"
buttontext:"FFD2HelperWire"

Mitä nyt koitin niin ei toiminu tuo scripti. Herjas jostakin name:sta... Oon kyllä max 5.1 aikaan käyttäny tuota ihan duunissa eli tiedä sitten onko max 5.1 jälkeen tullu jotain joka estää toimimasta ???

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
Vs: point3 to float??
« Vastaus #14 : Toukokuu 15, 2007, 12:04:04 pm »
mä kokeilin sitä kans ja se ei toiminu kans, valittaa jotain heti ekasta rivistä