Home Coding, Scripting, Shaders

Tech Artist - What are you working on: FOREVER Edition!

1679111256

Replies

  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    matt, have you considered doing a 'save to library' option that exports a selection to a new max file and creates the thumb. could be a nice quick way of saving stuff as you work.
  • MattLichy
    Hm... never knew about that, thanks for that tip!


    I'm not saving any max files with this tool though, just saving out jpgs now, so u can see whats in a max file when merging without having to open it and search through it manually and unhide layers/ect.
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    finally finished a set of C#, python and max scripts to establish 2 way communication between python and 3ds max (thanks blur for taking down your 3ds max/python stuff :( ). First I tried COM objects but this didn't prove practical because I had problems with multiple instances, python Qt windows never stayed on top of 3ds max, registry access issues (reg access is blocked for regular artists here).

    Sockets...I was too stupid for that :/ couldn't get it to work.

    But with named pipes I got it to work. So now we can launch python scripts with UI and make them talk to max and vice versa.
  • MattLichy
  • doc rob
    Offline / Send Message
    doc rob polycounter lvl 19
    when viewed from orbit.

    oooooooh :)
  • MattLichy
    Almost done with this.... finally :P. Got it all working now, seems solid.

    I just want to try and get better camera angles for the pieces if I can, which I think all I need to do is learn/figure out how to set each Objects Local Pivot's Y to Straight up (Z) , and use this look at controller setup to look at the perspective camera.

    I also would like to get a progress bar working right, like the green install bar, that moves along, but I'm not sure I can do it properly with my setup.

    anyways...

    Screenshot_47.jpg


    I'm thinking I should have my tools updated within a couple days or less. Maybe even tomorrow.. we shall see..
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    ...I'll just say it's hard to find fairly new PyQt versions with a working SQL module for 9 different versions of Maya....but I think I succeeded :) now I just need to convince our clients to stop using really old software...
  • MattLichy
    Updated my scripts page/tools download.

    NEW:

    - Added the Merge Geometry Preview, which is seen just above the last post. I have a video demonstrating it on the site as well.

    - UV Vert to Mesh Vert - Converts a UV Vert Selection to a Mesh Selection. It will take the UV Vert selection, collapse the stack and have the verts selected for you.


    I've also Fixed some random issues and such. You can see the bug list on scripts page as well.

    http://www.matthewlichy.com/Scripts.html
  • rooster
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    (almost) finished... now we have a framework (python modules, max files via filein, C# dll file for max) where we can run the same python program with python GUI in 18 different flavors of max (2011 - 9.0) and maya (2011 - 2008) both 32 and 64 bit. (still working on 8.5 - we still have clients who use this :/ )
    Now we have much less of a code base to maintain! Most of our new plugins will have the majority of their code in Python, with the option to easily port them to Maya. This is especially useful for scripts which are theoretically app independent (e.g. file management, naming conventions, etc, etc)

    Changes inside the python code are very very few to adapt a program to work with max or maya. All you need to do is use an if statement and then either write maya python/mel commands or dispatch your commands to max.
    A standard header and footer has to be included into your python code which calls some commands to set up everything - there's usually nothing to change here for the TA when writing a script.

    Communication is 2 way - trigger max functions from Python or trigger Python functions from Max.

    Such programs run directly inside Maya and via max we use named pipes for inter process communication. Named pipes functionality can also be used from within Maya, allowing us to code a stand alone programs in C# or in a certain Python version where we have certain modules which we do not have in this Maya version.
    Also we can write apps which talk to different (3D) apps at the same time. i.e. we could write a connector app translating stuff on the fly from Maya to Max (e.g. create a box, it creates one as well in Maya).

    Per default one can use Qt, pyODBC and ctypes in such python scripts and expect them to run on all supported apps. Was quite some work getting all those modules together for x86 and x64.

    so yeah...lots of work. But it paid off :)
  • Rick Stirling
    Offline / Send Message
    Rick Stirling polycounter lvl 18
    I'm working on....

    ...hiring a tech artist for Rockstar North.

    http://www.polycount.com/forum/showthread.php?p=1228413#post1228413
  • Justin Meisse
    Offline / Send Message
    Justin Meisse polycounter lvl 19
    rooster: that is awesome, is that in engine or faked?
  • rooster
    Offline / Send Message
    rooster mod
    thanks man! 100% playable (well, not *playable* as in fun yet, but it's controled by me, in my 10% finished prototype)

    watch this space! (or, maybe its own thread cos its a bit quiet in here)
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    Trying semi-dynamic radiosity technique.

    Web Player
    radiosity01.jpg
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    having fun with window handles... we want to pair stand alone scripts with Max/Maya and launch them from there as well. However the user experience should be as if those scripts were run directly from maya or max.
    So I've been looking that the Qt UI minimizes when the 3D app minimizes, that it stays on top of the 3D app while you work with it, etc. works pretty nice
  • MattLichy
    Very awesome Keen :D


    @Kwramm - Are you running a C++/C# windows form or whatever with Max? I want to learn how to do that sort of thing.
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    I'm using "named pipes" to have two processes talk to each other. The python script hosts the named pipes server. For max the named pipes client is implemented as C# dll. The UI is then coded in python using Qt. Therefore we can run those scripts natively in maya too!

    There are utility python functions which allow you to easily code apps which run either natively in Maya or talk via named pipes to max. This is especially nice for GUI frontends or database connectivity or P4 stuff - code once, use on many platforms.

    However, lets say you need python modules with are not available for your maya version (often the case with x64), then you can also use named pipes, because we implemented a named pipes client in python for maya too.
    e.g. you have a super image manipulation module, but it's only available for python 2.6 x86 and you're running Maya 2009 x64.

    You could probably use sockets as well instead of named pipes, but I ran into problems with that....maybe I was just not clever enough to figure it out.

    Right now we're working on cosmetics. since the python app is, when not directly launched from maya, a seperate process, it doesn't minimize with the app that launched it, it's ALWAYS in the foreground (should be in the background when the launching app (e.g. e3ds max) is inactive, should be in the foreground when it's active), etc.
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    I made some gpgpu stuff in Unity using tons of graphics blits and pixel shaders.

    http://keenleveldesign.com/pimp/gpgpu/raycasting01/WebPlayer.html
    raytracing02.jpg

    This example uses gpu raycasts to test visibility of the surface to an area light, the textures on the left are the scene triangle lists uses for raycasting.
  • iRavenStorm
    This thread is awesome and i see great idea.
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    quick intermezzo....writing a DDS loader class for python to read DXT compressed textures
  • MattLichy
    https://ephere.com/autodesk/max/


    Started looking into C# in 3DS Max. Using his .dll I was able to make my own .dll in C# in VS 2010, and get a form to appear on Load in Max, as well as print to the listener through C# and execute an existing function of mine written/loaded in MXS. Very cool stuff :D
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    Reworked the horizon rounding in MoonForge, it was a bit wonky before.

    moonforgehorizonrounding01.jpg
  • renderhjs
    Offline / Send Message
    renderhjs sublime tool
    is that chromatic aberration in unity?, also does that level loop or is it just a optical filter where you can walk endless in one direction?
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    Yeah chromatic aberration :P Its vertex distortion in shader, the world is actually flat. In the future I will have the world loop so you can actually walk "around" the moon.
  • rooster
    Offline / Send Message
    rooster mod
    what's going to happen when you try to tunnel to the other side :D
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
    time for me to learn how to write python modules in C++ ... my DDS loader, written in Python, is quite fast but not as fast as I would like :(
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    rooster, you will hit lava so you cant dig all the way through :P Note that the screenshot is an extreme example with a small radius, an actual level would be quite a bit bigger.
  • BeatKitano
    Offline / Send Message
    BeatKitano polycounter lvl 16
    The technical side is awesome really, but I've difficulties to see what you can build on the moon ? I mean is it a creative game only, or is there some crafting planned ?
  • Vrav
    Offline / Send Message
    Vrav polycounter lvl 11
    commander_keen! Your projects are so awesome.

    Maybe you could add a bevel to the exposed block corners to make everything look a little smoother... but I'm sure others would prefer the crisp, cube-y look. Since Unity can handle more geometry than Java, though, it might be nice.
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    BeatKitano, Right now its pretty much just building. In the future I want to implement a component based vehicle creation system, crafting, and team based gameplay.

    Vrav, I dont want to up the triangle count anymore. It has to rebuild at least 1 8x8x8 block cell every time someone modifies the terrain. Plus when I do stuff like baked indirect lighting and crumbling it will have to update them even more.

    [ame]http://www.youtube.com/watch?v=2mLSWxJ583A[/ame]
  • Keg
    Offline / Send Message
    Keg polycounter lvl 18
    Keen: looking good. How are you thinking of going about doing the indirect illumination?
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    BeatKitano, Right now its pretty much just building. In the future I want to implement a component based vehicle creation system, crafting, and team based gameplay.

    Vrav, I dont want to up the triangle count anymore. It has to rebuild at least 1 8x8x8 block cell every time someone modifies the terrain. Plus when I do stuff like baked indirect lighting and crumbling it will have to update them even more.

    http://www.youtube.com/watch?v=2mLSWxJ583A

    This is looking really nice, have you thought about "simulating" life-support? to have close in controlled spaces of air vs the outside vacuum.
  • BeatKitano
    Offline / Send Message
    BeatKitano polycounter lvl 16
    eld wrote: »
    This is looking really nice, have you thought about "simulating" life-support? to have close in controlled spaces of air vs the outside vacuum.

    Ahah, my first thought after seeing the last video :)
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    BeatKitano wrote: »
    Ahah, my first thought after seeing the last video :)

    And the best part about those gasses (for the most part) is that you cannot see them, so the clients don't need to know every block there's air on, they just need to know that they're suffocating.

    any calculations can be done completely server-side
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    eld, yeah thats one thing I wanted to do.

    Keg, I plan on sort of doing a blured direct sky light coming from the up vector. So I would first caclulate what voxels can see directly up infinitely. Then in another pass I see what voxels that are in darkness are next to a voxel in light and then transmit some light from the lit voxel, then keep doing that for about 8 passes.

    It sounds like a lot of processing, which it is, but after the first initial terrain generation only cells under the modified cell and their neighbors need to be updated, plus once the direct light at the position of the modified block hits a block, cells under that block dont have to be updated. It would have to be updated over multiple frames though, which is ok, and could be done server side. I think this is how its done in Minecraft.
  • renderhjs
    Offline / Send Message
    renderhjs sublime tool
    well its not me working on this (not yet) but I thought I'd share it here:
    A kinect plugin for Unity3d:
    http://forum.unity3d.com/threads/67982-Kinect-plugin
    unity test video:
    [ame]http://www.youtube.com/watch?v=RGUF999JUlM&feature=player_embedded[/ame]

    I think thats really cool, maybe I should start working on a 3d texture grabbing tool :)
  • Davision3D
    Offline / Send Message
    Davision3D polycounter
    awesome! Looks a bit like those nails height thingys, where you can push a shape in it and the nails will resemble it on the other side. :)
  • Davision3D
    Offline / Send Message
    Davision3D polycounter
    http://vimeo.com/17063238
    he is one step further with his kinect hack :)
  • Keg
    Offline / Send Message
    Keg polycounter lvl 18
    figured this fits here more. Been implementing some post processing shaders for the engine I am working on. After some headaches I managed a solution that worked with the data I have available. Still need to render the ambient occlusion to a lower res texture and potentially apply a blur depending on how things are needed.

    AmbientOccTest.jpg
  • renderhjs
    Offline / Send Message
    renderhjs sublime tool
    rewrote my Unity export script that basically wraps multiple objects automatically into different file containers. I just hate how unity itself often clutters with OBJ or FBX files and I wanted a bit more structure so I can update specific objects or subparts without Unity forcing to work scene wise in 1 max file.

    I just select a bunch of objects in max and based on their name it groups them into different groups with a name preview. There is also a heap delay because I noticed that buggy max crashes sometimes because some of the exporters is hanging or taking longer and not responding back to MXS.
    UnityMeshExporter_script.gif
    anyway nice single button solution for updating models in Unity
  • kio
    Offline / Send Message
    kio polycounter lvl 16
    hey this looks pretty ace! are you going to release if when its done? as much as I like unity but this would really speed up the annoying update process ;)
  • hawken
    Offline / Send Message
    hawken polycounter lvl 19
    Davision3D wrote: »
    awesome! Looks a bit like those nails height thingys, where you can push a shape in it and the nails will resemble it on the other side. :)

    someone needs to make a stereoscopic driver for using two Kinects at the same time.
  • Peris
    Offline / Send Message
    Peris polycounter lvl 17
    hawken wrote: »
    someone needs to make a stereoscopic driver for using two Kinects at the same time.

    its been done!
    [ame]http://www.youtube.com/watch?v=5-w7UXCAUJE[/ame]
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    Started another new game today :P Basically its a multiplyer shooter similar to quake3 but with a lot more focus on movement with acceleration and wall jumping and stuff.

    WebPlayer
    spambox01.jpg
  • Nysuatro
  • commander_keen
    Offline / Send Message
    commander_keen polycounter lvl 18
    Its a bit like that but a lot more fluid movement. Heres a video:
    [ame]http://www.youtube.com/watch?v=Tzp_dotWgTo[/ame]
  • Eric Chadwick
    Love the wall jumping, looks fun! Pretty too.
  • rumblesushi
    I'm working full time on my first game at the moment, an arcade style racing game, one of my favourite genres.

    Here are a couple of screenshots. Please ignore the crappy UVs and horrible road texture, this is just a test to see the design of the track and test the car handling etc. The car is going to be reworked too, as I made it without blueprints, and also forgot mirrors.

    This is a full res shot, the next ones are half res.

    ts03.jpg

    ts02s.jpg

    ts04s.jpg

    ts06s.jpg

    Because it's an arcade style racer, I'm purposefully not referencing real car physics. I'm simply making up the physics and handling, and tweaking it till it feels right.

    As you can see from the screenshots, I'm actually using soft body dynamics rather than solid body dynamics. Mainly because it's something I have more experience with, and I quite like the feel of soft body stuff.

    Each wheel is treated independently, and they are simply tied together with constraints, or rather damped springs. I have two versions, this version which is basically a 3D rectangle with 6 constraints, and also a 3D box version which has 28 constraints. I actually prefer the feel of the rectangle, so I'm using it, and it uses less juice.

    Because the track is relatively low poly (10/12 thousand just for the base road and mountains, probably 16 thousand or so when it's complete, with trackside objects, buildings, tunnels etc) - I'm using the normal geometry for collisions to save on RAM and download times. There's a pretty low number of polys per node, most of which are quickly culled anyway. I'm using a broadphase grid by the way, they are very, very efficient with minimal overhead.

    What kind of poly counts are the average tracks on other low power platforms, such as DS/mobile?

    Oh and in regards to level design, I made this track with line/sweep, pretty easy to get the basis of a track formed. I then adjusted the altitude variation of the track with the line vertices after sweeping it.

    I haven't made my mind up yet whether to use a variable or normalized spline. What do you think?

    In some ways a variable one is better, because the corners should have more polys than straightaways. With a normalized spline of the same polycount, the corners are significantly lower poly, noticeably less smooth/round.

    However, a normalized spline has the big advantage of being easier to UV, with completely uniform poly size.

    The game is going to have at least 7 cars and 3 tracks. I'll upload videos as soon it's developed enough to warrant one ;)

    Cheers,
    RumbleSushi
  • rumblesushi
    I'm surprised at how easy it is to write a custom exporter in Max Script. I guess that's partly just scripting languages for you. I don't like scripting languages because they can give you bad habits, but one can't help but like the ease of use.

    Apart from the obvious perks of a custom exporter, the flexibility, and being to tailor it to your workflow/engine, the potential parse speed is another big perk.

    I'm exporting objects as AS3. So the model data gets compiled into AVM bytecode. Needless to say, the data access speed of byte code is magnitudes faster than accessing strings or binary at runtime.

    Check this demo out, it parses 109,000 polygons in half a second, which for AS3, is very good - http://rumblesushi.com/roku.html

    You can press 3 to clear the engine and reload the objects, the parse speed gets updated.

    Before I was just using OBJs, and in this demo a 20,000 polygon model takes significantly longer to parse than the 109,000 polys above - http://rumblesushi.com/trex.html

    Incidentally my engine is faster than ever now. Basically as fast as it gets in AS3. There's some things I could do to improve data access speed further, that might net an extra frame a second, but that's about it.
  • OutOfInspiration
    Offline / Send Message
    OutOfInspiration polycounter lvl 10
    Hey,
    Working on maxscript tool ToTex. (Render To Texture), already working on it for a few months.
    http://sven.fraeysweb.be/tools/index.php?page=totex

    totex_ui.png

    It's a script to make baking a lot easier in 3ds max. The problem with max is that you need to define too much unnecessary settings before you can render something out that might have the result you are after.

    With this tool: with one click you can render out any map (1 or more objects) you want going from basic maps (normal, diffuse, shadow, uv, etc.) to more complex maps:
    AO Lighttrace, Gradient Map, Material ID masks, vertex color, animated textures, selection masks ... Place it directly into your clipboard to paste and use it in photoshop.

    Also something useful for real-time fanatics :) I implemented the Xoliul shader to this tool, you can preview a baked normal map in to a real time shader to check if your bake had any flaws. (same for any other map)

    It has been a great time saver for my texturing process.
    And I hope it can help you guys out :)

    Any ideas that I could implement are more than welcome!

    thaanks
1679111256
Sign In or Register to comment.