Notifications
Clear all

[Closed] The MCG Thread: Post Tools, Compounds and questions here!

And isn’t that a good thing?

from a company standpoint it’s not a good thing. for home use it’s ok.

So… how exactly will be MCG easy to learn… As denisT mention before maxscript example looks not complicated then MCG node structure.
Another question, can maxscript use some of MCG “nodes” without MCG tool? In other words, can be MCG extend maxscript or not?

2 Replies
(@gandhics)
Joined: 11 months ago

Posts: 0

You can output make mcg graph as maxscript function.
So, yes.

(@pi3c3)
Joined: 11 months ago

Posts: 0

As the output of an MCG node can be a modifier, object, maxscript, compound or a utility, and because the MCG node-s are native .NET functions, and because the output can be a maxscript incidentially, you probably can…

So I still doesn’t understand, why are you so skeptic.

You can be sure that you will never write a procedural railway tool in C++ or even in maxscript, because there are limitations in usage for modifiers and objects in maxscript, and because C++ is not designed for that kind of usage. But in MCG you will probably make a procedural railway creation tool, because it’s intuitive, you have the chance to instantly make modifications on it or anything you like, and it’s procedural, for later use. Just like in Houdini… There are tremendous many ways of how you can use this programming language.

The arguments against MCG here would apply for all Graph-editors, Pflow, Shader-FX, ICE and so one. One might argue that a Pflow language would be faster to work with then using the graph editor. And instead of Shader-FX i could also use HLSL. XSI had a nice SDK, so what was the point of ICE?

The idea of Graph editors (imho) is to abstract from the concept of ‘programming’. The further away from the existing SDK/Scripting the better. Connecting reusable building blocks to create new tools and a visual approach to tool design. Not everyone wants to implement tools in C++ or Maxscript. The SDK is big, complicated and not easy to learn. And C++ is a horrible language to work out ideas. And Maxscript…oh mei.

For me MCG is a heaven send that`s for sure.

Another question instead of arguing about a thing that we still haven’t tried yet, because of the lack of resources. When does the reference guide will come for 3dsmax 2016? I can see only the 2015.

Does anyone know it? I cannot wait to learn the proper usage of MCG…

check this video. it a simple modifier is working. it was written on pure mxs. the base map function code is 16 lines of code…
also you can see its UI which helps to understand what it can do.

could anyone reproduce it using MCG? i want to see the graph.

You can be sure that you will never write a procedural railway tool in C++ or even in maxscript, because there are limitations in usage for modifiers and objects in maxscript, and because C++ is not designed for that kind of usage. But in MCG you will probably make a procedural railway creation tool, because it’s intuitive, you have the chance to instantly make modifications on it or anything you like, and it’s procedural, for later use. Just like in Houdini… There are tremendous many ways of how you can use this programming language.

I have to say that is utter BS a procedural railway in C++ or mxs is a pretty simple exercise. half the process doesn’t even need any coding

what can be easier? just compile the cloner example from the article and give the numbers.

and we all will be able to compare mxs vs mcg. i can make c++ version of this plugin… it will take another half hour. but it looks like the street is only one way.

I told you that I made scatter on each verts modifier.

8 Replies
(@denist)
Joined: 11 months ago

Posts: 0

and so what? you want me to write it on mxs?
ok… show us the scatter in work. just a movie.

(@denist)
Joined: 11 months ago

Posts: 0

anyone who has a chance to play with MCG please give us something, anything… simple plugin, performance numbers, screenshot of the graph… just try to proof it’s not a myth but a gift dropped from heaven.

(@gandhics)
Joined: 11 months ago

Posts: 0

OK… here is rhe graph screen grab and viewport grab.
I’ll post mcg file soon. I need some clean up.

I cloned teapot with 4 segment on torus tieh 24 segs and 12 sides.
Then, I animated rotation.

On my i7-2600, I got 1.2fps.

(@jonadb)
Joined: 11 months ago

Posts: 0

That ‘transform mesh’ compound probably had a non-parallel map in it somewhere, so there you can gain some speed.

And the combineAllmeshes node is a simple linear one, if I have some time today I’ll do a multi threaded cluster attach compound which should scale better.

(@denist)
Joined: 11 months ago

Posts: 0

here is very rough version of the plugin

plugin simpleObject TeapotScatter
  	name:"TpScatter"
  	classID:#(0x193cc23b, 0x193cc2db)
  	category:"How to with denisT"
  (
  	fn isGeometry node = iskindof node GeometryClass
  		
  	parameters params rollout:params
  	(
  		target type:#node ui:ui_target
  	)
  	rollout params "Parameters"
  	(
  		pickbutton ui_target "None" width:144 autoDisplay:on filter:isGeometry align:#right offset:[4,0]
  	)
  
  	fn _attachMeshes meshes = 
  	(
  		attach = meshop.attach
  		n = meshes.count
  		while (num = n/2) > 0 do for k=1 to num do attach meshes[k] meshes[(n -= 1) + 1]
  		meshes[1]
  	)
  	fn _meshTransform mesh tm =
  	(
  		for v=1 to mesh.numverts do setvert mesh v ((getvert mesh v) * tm)
  		mesh
  	)
  	fn _getVertexTransform mesh v = 
  	(
  		translate (arbaxis (getnormal mesh v)) (getvert mesh v)
  	)
  	mapped fn freeMesh mesh = 
  	(
  		free mesh
  		delete mesh
  	)
  	on buildMesh do if not isGeometry target then
  	(
  		mesh = trimesh()
  	)
  	else
  	(
  		--t1 = timestamp()
  		--m1 = heapfree 
  		
  		_m = snapshotasmesh target 
  		_t = (createinstance teapot).mesh
  		
  		meshes = for v=1 to _m.numverts collect
  		(
  			_meshTransform (copy _t) (_getVertexTransform _m v)
  		)
  		setmesh mesh (_attachMeshes meshes) 
  		--format "verts: % time: % memory: %
" _m.numverts (timestamp() - t1) (m1 - heapfree)
  
  		freeMesh #(_t, _m)
  
  		mesh
  	)
  
  	tool create
  	(
  		on mousePoint click do case click of
  		(
  			1: 
  			(
  				nodeTM.translation = [0,0,0]
  				#stop
  			)
  		)
  		on mouseMove click do case click of
  		(
  		)
  	)
  	
  	on create do ()
  	on update do ()
  	on load do ()
  ) 

but it gives already ~3 ftp on my machine.

it’s made again as a simpleObj because in the mxs there is a problem (at least version <= max 2014 which i have now) with this type of modifiers.

there is no built-in class of modifier with has only one handler – on baseobject changed.
i’ve asked about this class (and some another) for many years, and finally after getting nothing i made my own. so in my framework i have it. and the example above can be made as a modifier. of course it can be done using sdk as well.

(@davius)
Joined: 10 months ago

Posts: 0

And what are the specs of such machine?

(@denist)
Joined: 11 months ago

Posts: 0

i have pretty old machine honestly… much worse than gandhics’s

 PEN
(@pen)
Joined: 11 months ago

Posts: 0

Your starting to sound paranoid about your job Denis. I have full respect for you as a developer, wish I had some of your advanced skill sets. But I think that you are completely missing what this is and what it will do for every production that doesn’t have a Denis.

i prefer to have 10 imps from hell who will do job for me

Page 7 / 24