{"action":"opened","issue":{"url":"https://api.github.com/repos/mottosso/maya-corollary/issues/1","repository_url":"https://api.github.com/repos/mottosso/maya-corollary","labels_url":"https://api.github.com/repos/mottosso/maya-corollary/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/mottosso/maya-corollary/issues/1/comments","events_url":"https://api.github.com/repos/mottosso/maya-corollary/issues/1/events","html_url":"https://github.com/mottosso/maya-corollary/issues/1","id":142175925,"number":1,"title":"Minimum Viable Product","user":{"login":"mottosso","id":2152766,"avatar_url":"https://avatars.githubusercontent.com/u/2152766?v=3","gravatar_id":"","url":"https://api.github.com/users/mottosso","html_url":"https://github.com/mottosso","followers_url":"https://api.github.com/users/mottosso/followers","following_url":"https://api.github.com/users/mottosso/following{/other_user}","gists_url":"https://api.github.com/users/mottosso/gists{/gist_id}","starred_url":"https://api.github.com/users/mottosso/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mottosso/subscriptions","organizations_url":"https://api.github.com/users/mottosso/orgs","repos_url":"https://api.github.com/users/mottosso/repos","events_url":"https://api.github.com/users/mottosso/events{/privacy}","received_events_url":"https://api.github.com/users/mottosso/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-03-20T16:00:58Z","updated_at":"2016-03-20T16:00:58Z","closed_at":null,"body":"\r\n### Motivation\r\n\r\nDeveloping for Maya is a pain.\r\n\r\nIt requires you to..\r\n\r\n1. Recompile, per version of Maya\r\n1. Have Maya running while developing, hindering continuous integration\r\n1. Stick to a single programming language, i.e. C++\r\n1. Use an archaic version of said programming language\r\n1. Use a particular compiler for said programming language\r\n1. Limit the use of your labour to Maya\r\n\r\nThis MVP will explore the possibility of a server/client implementation of high-performance computation to combat these disadvantages, with the goal of reaching a performance level of \"good enough\".\r\n\r\nTo some extent, performance may very well be outperform a native plug-in via simplified maintenance, testing and better library and language support (e.g. C++11, 14, 17).\r\n\r\n### Goal\r\n\r\nThis MVP should provide an externally running process with raw vertex POSITIONS, modify this data in some way and subsequently feed it back into Maya.\r\n\r\n### Implementation\r\n\r\nA node acting as a ZeroMQ endpoint from within Maya takes as input the `.outMesh` of another node of type `mesh` and provides subsequent node with an `.inMesh`.\r\n\r\n![image](https://cloud.githubusercontent.com/assets/2152766/13905317/6aee321c-eeb4-11e5-9dc7-544ada6a90dd.png)\r\n\r\nThe endpoint transmits the information to an externally running process within which it is somehow being modified and later returned. The endpoint node then outputs the result of this transformation, like any other *deformer* would.\r\n\r\n**Todo**\r\n\r\n1. [ ] Develop a Maya Python plug-in to transmit vertices as an array of `vec3`, suitable for GLM.\r\n2. [ ] Develop a Python equivalent, receiving this data\r\n3. [ ] Somehow modify this data\r\n4. [ ] Return data to Maya Python plug-in\r\n5. [ ] Repeat steps 2-4 with C++11\r\n6. [ ] Profit\r\n\r\n### Conclusion\r\n\r\nThe end result is a compiled application of high-performance, communicating with a ZeroMQ server running within Maya. The default implementation within Maya will be a Python plug-in, with an optional compiled component for higher performance. Estimating a 5% cost for IPC compared with natively developed plug-ins, excluding potential performance gain mentioned in [Motivation](#motivation) above.\r\n\r\nIf successful, the technique may then also apply to other applications, including standalone use."}}