CompuServe Thread

#IPAS/Plug-Ins Wish List

53 messages in this thread
#168417From: Marion K. MarksMay 5, 1995 3:36 PM
I'm starting this Thread as a place to put ideas for new IPAS/Plug-Ins where developers can see them. Post away! 🙂 Here's one I thought of today: how about an .APX that at render time compares the current camera view with the object, and renders the object as-is but also renders a new object which basically "outlines" the 3D object as seen from the current view, thus providing a 2D-like cartoon look? This would be a great way to get cartoon animation. Optionally, the original object could be not rendered leaving only the outline, so you could export that as a .FLiC into Animator Pro/Studio to use as the basis for 2D animation!
#168480From: LEE STEELMay 5, 1995 9:46 PM
Here are a few of my wishes… A custom pallet generator running in 3DS. Fish eye lense. hair grass that will sway in the wind
#168509From: Ted BoardmanMay 6, 1995 6:25 AM
>> A custom pallet generator running in 3DS. Fish eye lense. << Lee And, of course, a spell checker!!<G> TedB -Ted Boardman !^NavFont01F000DMGJHGzMG|HG5B9FF0
#168657From: LEE STEELMay 7, 1995 9:29 AM
Can't be without one of those.
#168647From: David GouldMay 7, 1995 5:08 AM
<<Here's one I thought of today: how about an .APX that at render time compares the current camera view with the object, and renders the object as-is but also renders a new object which basically "outlines" the 3D object as seen from the current view, thus providing a 2D-like cartoon look?>> Looking at some Disney characters right now I see that they are not only outlined but all the inner sections( lips, checks, etc ) are also given a line. So while it may appear at first that you could just do an edge-finding search, it is more complex that that since you don't want to display all the edges only particular ones. I have worked out an algorithm to create such lines for any given object, even to produce smoothed outline edges from faceted objects including the silhouette which is necessary for cartoon characters. Given that the routine would output an image, I think this would be best coded as an .IXP that works on the objects in the scene to produce the "outlined image". DaviD "Keeping my crayons within the outlines" GouID
#168712From: alec jasonMay 7, 1995 4:38 PM
David, I have had to do manual outline tracing of 3DS images in Corel and it does work but is quite tedious. I'd be interested in your outline IPAS. But when? Alec Jason
#168867From: David GouldMay 8, 1995 2:49 PM
<<I'd be interested in your outline IPAS. But when?>> I'm know looking into the feasibility of developing such an IPAS. Depending on what the developers kit offers me, I'll be able to determine if I can extract enough information from the 3DS scene to compute the boundary and interior outlines. I'll let you know how I progress. But in the meantime could you *outline* what your requirements are for such an IPAS. What specifically do you want it to do? DaviD "Hi Ho it's off to work we go…" GouID
#168746From: Mike KelleyMay 7, 1995 10:47 PM
I think you'd find a lot of interest in such a routine, David. There was a thread here a while back where at least three or four of us expressed desire to buy something like this. If you ever get anything worked out, count me in (I want to do DISNEY!).
#168868From: David GouldMay 8, 1995 2:49 PM
<<I think you'd find a lot of interest in such a routine, David. There was a thread here a while back where at least three or four of us expressed desire to buy something like this.>> I'm now looking into the feasibility of developing such an IPAS. Depending on what the developers kit offers me, I'll be able to determine if I can extract enough information from the 3DS scene to compute the boundary and interior outlines. I'll let you know how I progress. But in the meantime could you *outline* what your requirements are for such an IPAS. What specifically do you want it to do? In addition to the animated character outlines, such a routine would be useful for generating technical illustrations of mechanical parts and architectural buildings. In fact any 3DS object and/or scene that you wanted converted to an illustration(pen and ink strokes only) would benefit from such a routine. You could also create hidden-line removal images(something that isn't currently supported easily in 3DS). DaviD "Hi Ho it's off to work we go…" GouID
#168982From: Mike KelleyMay 8, 1995 9:58 PM
>But in the meantime could you *outline* what your requirements are for such an >IPAS. What specifically do you want it to do? It sounds like you have a pretty good idea already, David. We need the outline of the object, as well as hidden line removal, and then (the tough one, although Jonas suggested that routines similar to those in LensFX for the outline glow) the lines also have to cross over the body of the object correctly, as when a character's arm moves across the body you need to see both "lines" of the outline of the arm as well as the outline of the body. Since I don't understand the 3D logic involved, I'm not sure how it would be determined where such a line ended (when the arm actually attached into the body) and I guess that's the really programming problem. However, in the previous thread Gary said he thought it was doable (then again, he said he thought ANYTHING was doable). Once that was programmed then only niceties have to be added, such as thickness of outline, color, etc. If I were writing it (and I understood such things — I'm a simple humble database programmer) I wouldn't worry about the color of the object, because that can be done now with a self-illuminated material. By leaving that aspect alone, one might achieve interesting shaded effects even within the outline. Indeed, using a Video Post combination of wire shading and self-illumination, you can achieve nearly all the right effects EXCEPT for the @$#@#$@ "arm across body" problem! While Gary is excited about photorealism, I personally think that this animation capability would be the hottest thing to come to 3DS ever. It would bring all the power of 3DS to cell-type animation.
#169656From: Marion K. MarksMay 11, 1995 4:55 PM
Giving more thought to it, I figured out a better way to do it. It should indeed be an .IXP, not an .AXP. But it would use the Z-Buffer (with the appropriate change to 3DS.SET made, which should already be enabled if you have LenzFX up and running) to determine the "edges" of objects. A parameter in the Setup box could allow you to set how much of a difference in Z-Buffer (depth) values for adjacent pixels would be needed to be detected as an "edge." This would nicely solve the "arm-across-the-body" problem. Basically, the Z-Buffer can be considered as a grayscale image (with 32-bit instead of 8-bit values for precision, such that black is 0 and white is over 4 billion instead of merely 256 — or you can consider the Most Significant Byte as the mantissa and the other three bytes as the decimal portion of a fixed-point scaled-integer fraction, so that black is 0.0 and white is 255.9999999403954 [which is about what 255 and 16,777,215/16,777,216ths works out to]) such that the value of each pixel is a meaure of the DISTANCE between the camera and the point on the object nearest the camera at that pixel location, with black being no object (infinite distance, aka the Background) and pure white would be a point on an object that is right at the Z-Clip distance from the camera itself, with grays progressing toward black with increasing distance. This is how LenzFX does its rack-focussing and other cool effects. Where the Z-Buffer values of adjacent pixels are close together, it can be assumed that the pixels are part of the same object. But where there is a sudden and sharp discontinuity between Z-Buffer values for adjacent pixels, then they are almost certainly parts of different objects, which means we've found an EDGE! Perhaps the makers of LenzFX would be the best people to put out such an Outlining .IXP, as they've proven their skill at dealing with the Z-Buffer. I think it would make a handy addition to LenzFX Version 2.0. 🙂 As for outlining facial features, etc., that's what texture mapping is for. <g> Related wish for 3DSr"5" (the _real_ r4): multiple .AXPs per object, preferrably unlimited. The scrolling list dialog for this would have a three-state button for each .AXP that would tell it whether that .AXP would be passed: the bounding box, the original object unmodified by any prior .AXPs, or the object as it exists after having been modified by any prior .AXPs (allowing, for instance, Bones Pro to act on a Skinned object, or vice-versa!). Another IPAS-related wish: since many of us have The Scripting Extension (not me, yet, or else I'd probably have whipped up an Outline script by now!) and can thus write plug-ins in a high level language, would any of the professional IPAS Plug-Ins developers be interested in working out deals wherein they purchase or license TSE BASIC scripts that others of us have developed and translate them into C coded IPAS routines and market them? Such an arrangement could lead to an explosion in quality IPAS Plug-Ins, since a lot more of us who have great ideas can implement them in TSE BASIC than in C! Yet TSE BASIC scripts, particularly for .IXPs, .AXPs, and .SXPs, would likely not sell well because they would be so slow. (The speed isn't as important for .PXPs and .KXPs, as they don't have to execute repeatedly for each frame at render time, but are used only occasionally during scene and animation design, so a market for such scripts in their original TSE BASIC forms is more viable.)
#169914From: David GouldMay 13, 1995 10:28 AM
<<Basically, the Z-Buffer can be considered as a grayscale image (with 32-bit instead of 8-bit values for precision, such that black is 0 and white is over 4 billion instead of merely 256>> What is the bit-resolution of the Z Buffer in 3DS? <<Where the Z-Buffer values of adjacent pixels are close together, it can be assumed that the pixels are part of the same object. But where there is a sudden and sharp discontinuity between Z-Buffer values for adjacent pixels, then they are almost certainly parts of different objects, which means we've found an EDGE!>> I tried the Z-buffer approach awhile ago but found that the problem of not being able to differentiate between two objects means that some lines that should be created aren't. For instance if you rendered a front view that showed two boxes sitting side by side each other with no gap between them, the edge where they both touch won't be created since the Z-Buffer depth remains the same across the two boxes without any change. The problem is that the Z-buffer doesn't contain information as to which object a particular Z depth belongs. Instead, I've opted for an AXP that creates the outline in 3D at rendering time. By creating the outline in 3D you can assign any texture you want to it, allowing for infinite rendering possibilities, including bumpy outlines, reflective shiny outlines, and even outlines casting shadows etc. DaviD "Lumpy bumpy outlined porridge" GouID
#170753From: Marion K. MarksMay 18, 1995 12:22 PM
Good point about adjacent objects that are the same distance from the camera. That may be able to be handled by referring to the bounding boxes in the .LOC files produced at render time (the same files that the now-defunct FLARE.IXP from Yost used), but that would only show the rectangular bounding boxes, not the actual boundaries of the objects (in your example, it would not work if the seam between the two boxes was at any angle on the screen other than straight horizontal or straight vertical). Still, though, that situation should be rare enough in generating cel-type animations. I assume the Z-buffer is 32-bit from the comment in the r"4" 3DS.SET file for the VPOST-ZBUFFER: ;Setting VPOST-ZBUFFER to YES causes a Z-buffer to be allocated and computed ; during rendering from Video Post. =At 4 bytes per pixel=, this buffer can be ; large; for example for a 640×480 image, the Z-buffer is 1.2 MB. This is ; needed by certain types of IPAS Plug-Ins. Default is NO. ;VPOST-ZBUFFER = YES 4 bytes per pixel = 32 bits per pixel. SEEZ.IXP (available in the AMMEDIA Library) extracts the Z-buffer from the Video Post [KF-Scene] item above it and replaces the image buffer with a version of the Z-buffer visualized as a grayscale image formed by truncating the 32-bit values to 16-bit values. When the bitmap is saved (assuming you Video Post rendered to disk) to any standard file format, the 16-bit image is either truncated or dithered down (depending on the DITHER TRUECOLOR setting) to an 8-bit grayscale image, which can then be fed to such programs as those nifty stereogram image makers. But the OUTLINE.IXP would have access to the full 32 bits, which means that adjacent objects would have to be REAL close together Z-wise in order to not be distinguishable from the .IXP Z-buffer. 32 bits means over 4 BILLION different possible values! About the only thing I can think of which would cause a problem here would be an assembled jigsaw puzzle viewed face-on when you wanted to outline each puzzle piece. For such cases, copying the objects in-place, then 3D-scaling the copies up from local axis VERY slightly, and linking these copies to their originals and AutoEdging them and assigning the copies a Wire material would do the outlining job nicely, but that's tedious and doesn't work as well for objects with more complicated geometry.
#170887From: James Coulter[Mindscape]May 19, 1995 1:58 AM
> but the OUTLINE.IXP would have access to the full 32 bits < An algorithm that simply calculates the slope of a surface by comparing the Z value of neighboring pixels would work for adding the "outlining". Such an algorithm would inherently accomodate overlapping, edging, and radiused surfaces. A user-definable slope value woud be handy. — James — Choreo Motion —
#171482From: Marion K. MarksMay 23, 1995 12:35 PM
That's basically what I had in mind.
#171944From: James Coulter[Mindscape]May 25, 1995 10:53 PM
I do see one small problem with such an algorithm. Large surfaces that are nearly (but not quite) parallel to the camera's vector would produce very wide black lines. Maybe a max thickness threshold would keep lines from getting too wide, but this has its problems too. — James — Choreo Motion —
#172462From: Oliver MuotoMay 29, 1995 1:49 PM
Are there any Alpha Channel IPAS routines out there. Oliver Muoto Xaos Tools, Inc.
#172559From: Jonas Ruikis [ADESK]May 30, 1995 8:13 AM
Hi Oliver, << Alpha… IPAS.. >> File Info for NOALPH.ZIP Section: IPAS Usage Contributor: 76702,413 Size: 13636 Submitted: 10/4/94 Type: Binary Accesses: 257 Title: Alpha Channel stripper IXP for 3DS Video Post. Keys: YOST GROUP PD IPAS IXP STRIPS ALPHA CHANNEL VIDEO POST This little freebie Yost Group IXP solves the problem with not being able to use the Alpha>0 option in various other IXP's when compositing multiple-layer effects because the multiple layer's alpha channels are combining. NOALPH.IXP can strip out the alpha channel at any point in a Video Post sequence, overcoming that limitation and providing a clean slate for the next layer's compositing effect. File Info for ADOT.ZIP Section: IPAS Usage Contributor: 70673,1605 Size: 24069 Submitted: 3/29/94 Type: Binary Accesses: 165 Title: Alpha Dot Keys: IXP IPAS 3DS ALPHA CHANNEL METHEMOGLOBIN HYPOXIA IXP routine that will set the value of the upper left pixel of an image's alpha channel. Confused? Wait 'till I explain what that's needed for…. Freebie, use at your own risk… If you melt down another Chernobyl, don't cry for me Argentina… (Approximate download time at 2400 bps using CIS B: 1:20) File Info for ALPHA.ZIP Section: IPAS Usage Contributor: 76702,413 Size: 29095 Submitted: 1/16/93 Type: Binary Accesses: 427 Title: Alpha channel viewer IPAS routine for 3D StudioR2 Keys: ALPHA IXP CHANNEL VIEWER IPAS ROUTINE YOST GROUP ALPHA.IXP is an image processing external process for 3D Studio R2 that allows you to view the alpha channel within a 32-bit image for image diagnostic purposes. It's useful for checking an images alpha to see what that image will do when composited with other images. This is a Public Domain IPAS routine from Yost Group, Inc. File Info for T32-24.ZIP Section: Utilities Contributor: 76077,2774 Size: 8571 Submitted: 6/5/92 Type: Binary Accesses: 125 Title: TARGA 32-bit to 24-bit file stripper Keys: TARGA TIPS ALPHA STRIP Strips 32-bit uncompressed Targa (.TGA) files to 24-bit files. Useful for avoiding the 3D Studio 2.0 Video Post bug regarding 32-bit textures used in the KF Scene. Also strips the TIPS or TIPS+ palette info, as well as info & postage-stamp found in TGA 2.0 file format. Should work on any size file. Written in 'C' by Kevin Krell of Computer Support Associates. Command line interface: T32-24 inFile.TGA outFile.TGA. UnZIPs to about 15K. Requires 286 or above. . .(Approximate download time at 2400 baud using CIS B: 0:40)
#172582From: Jonas Ruikis [ADESK]May 30, 1995 9:48 AM
File Info for ALPHA.ZIP Section: IPAS Usage Contributor: 76702,413 Size: 29095 Submitted: 1/16/93 Type: Binary Accesses: 427 Title: Alpha channel viewer IPAS routine for 3D StudioR2 Keys: ALPHA IXP CHANNEL VIEWER IPAS ROUTINE YOST GROUP ALPHA.IXP is an image processing external process for 3D Studio R2 that allows you to view the alpha channel within a 32-bit image for image diagnostic purposes. It's useful for checking an images alpha to see what that image will do when composited with other images. This is a Public Domain IPAS routine from Yost Group, Inc. File Info for T32-24.ZIP Section: Utilities Contributor: 76077,2774 Size: 8571 Submitted: 6/5/92 Type: Binary Accesses: 125 Title: TARGA 32-bit to 24-bit file stripper Keys: TARGA TIPS ALPHA STRIP Strips 32-bit uncompressed Targa (.TGA) files to 24-bit files. Useful for avoiding the 3D Studio 2.0 Video Post bug regarding 32-bit textures used in the KF Scene. Also strips the TIPS or TIPS+ palette info, as well as info & postage-stamp found in TGA 2.0 file format. Should work on any size file. Written in 'C' by Kevin Krell of Computer Support Associates. Command line interface: T32-24 inFile.TGA outFile.TGA. UnZIPs to about 15K. Requires 286 or above. . .(Approximate download time at 2400 baud using CIS B: 0:40)
#169892From: SEAN PLATTERMay 13, 1995 2:56 AM
>> Looking at some Disney characters right now I see that they are not only outlined but all the inner sections( lips, checks, etc ) are also given a line. So while it may appear at first that you could just do an edge-finding search, it is more complex that that since you don't want to display all the edges only particular ones. I have worked out an algorithm to create such lines for any given object, even to produce smoothed outline edges from faceted objects including the silhouette which is necessary for cartoon characters. << Hey! I'm in the market for one of those routines!!!!!!!! I've got a high-profile job coming up that has to look like traditional cel animation and I'm having nightmares contemplating tracing the edges of each object in Meshpaint! (And my nightmares were even more horrifying before Meshpaint's release!) I will be happy to sell you my children and any other family members (I have a strict no-return policy) in order to get a routine like this! Please contact me via e-mail if you would be interested in adding yet another job to your busy schedule. Thanks!! Sean Platter 75721,1564
#168987From: mark schneiderMay 8, 1995 10:02 PM
Hi there, I've got a really good one ….::: Imagine this: When rendering an animation, the camera is so smart that is never renders anything (meaning any image or shadow etc) until it get into camera view, as soon as it is out of camera view, it is no longer rendered. Imagine how much time could be saved in a perfect world like this! – Could this ever happen ? – Mark in Canada.
#169224From: David GouldMay 9, 1995 4:40 PM
<<When rendering an animation, the camera is so smart that is never renders anything (meaning any image or shadow etc) until it get into camera view, as soon as it is out of camera view, it is no longer rendered.>> If I understand your question, you want 3D Studio to ignore objects that are outside the camera view. But, 3DS(and almost all rendering packages) does this already. It would exclude any object outside the camera view and clip those objects that intersect the camera view. This process is part of the standard rendering pipeline of almost rendering packages. Though if you are using reflections, 3DS would have to take into consideration those objects outside the camera view since they may be reflected in objects seen from the camera. Also if an object is outside the camera view but it's shadow is seen by the camera then it must be processed also. DaviD "Culling objects" GouID
#169246From: Mark YankeeMay 9, 1995 5:58 PM
Mark, << When rendering an animation, the camera is so smart that is never renders anything (meaning any image or shadow etc) until it get into camera view >> This already does happen for objects. Mark
#169366From: Jeffrey LererMay 10, 1995 7:13 AM
Mark <this already does happen for objects> True. However, if an object is in a scene though not visible to the camera, does the renderer load the applied maps simply because the object is in the scene?
#169650From: Mark YankeeMay 11, 1995 4:51 PM
Jeffrey, << this already does happen for objects> True. However, if an object is in a scene though not visible to the camera, does the renderer load the applied maps simply because the object is in the scene? >> Yes I believe so. I haven't even thought about the texture map loading. Mark
#169749From: Jeffrey LererMay 12, 1995 5:34 AM
Mark <texture map loading> Below all my scenes are dummies assigned to portions of the scene and are used exclusively for hidding larg portions not seen by the camera. Makes development so much easier (i actually have a standard X Y Z numbered grid with color scheme that lays the foundation for all my PRJs… took me a few years to finally get some standard routinization/naming conventions/color assigns in place. Jeffrey
#169849From: mark schneiderMay 12, 1995 7:01 PM
Hi Jeffrey, This sounds like an interesting concept. I don't understand what you exactly mean ?… lets say you built a "wall" in front of part of a scene that was in the camera's view, eventhough that part of the scene would not be "scene" (haha) would it not still be rendered because it was in the camera's view ? I didn't get what you meant by: Below your scenes you have created dummies… very interesting. Mark.
#169848From: mark schneiderMay 12, 1995 7:01 PM
Hi Mark, neither did I, (textures loading ) while not rendering, hmm, interesting eh? hope yo read my previous message, … about being able to click on any frame and tell 3ds to start rendering or stop rendering an object at that frame. … It would go like this … FRAME 212: START RENDERING OBJECT :TABLE-1 ? (Y) (N) , Frame Duration : _____ imagine the possibilities!!! Mark in Montreal. ( I know I'm crazy for just thinking it!, but one day this will be an option!)
#169847From: mark schneiderMay 12, 1995 7:01 PM
Hi Jeffrey, Hmm, good question, I have always been under the assumption that eventhough an object is not in camera range, maps are still applied to the object, thus increasing rendering time. This is really what I was taking about though, say we have a model of a house, at the beginning of the animation, you see the outside of the house only. Eventhough you only see the outside shell of the house, the house still contains walls, pictures, tables, chairs etc, and the back of wall of the house, and other stuff. Everything is in camera range, but you don't seen ANY of the inside articles. The thing is that everything is still being rendered, eventhough you only see the outside of the house in the rendered image. I guess my original comment was a bit misleading. I just thought it would be cool to have the program smart enough to know that the stuff INSIDE the house should not be rendered. *** how about this : Being able to actually tell 3ds at a certain frame, to start rendering an object!, in the keyframer, you could actually click on a frame number, and yo would be able to click on objects to start rendering or to stop rendering … I guess this is what I meant and badly explained it. Sorry. Well, could this ever happen ?? if so, that would be super! Mark in Montreal.
#169901From: Jeffrey LererMay 13, 1995 6:41 AM
Mark <being able to actually tell 3ds at a certain frame, to start rendering an object> That's what HIDE KEY in your TRACK INFO is all about. There is a distinct difference though between an object you DISPLAY/HIDE and an object you INSERT HIDE KEY and that has to do with whether or not the mapping is loaded. Jeffrey
#170023From: Jerome R. KaliszMay 14, 1995 11:16 AM
>>Mark <being able to actually tell 3ds at a certain frame, to start rendering an object> That's what HIDE KEY in your TRACK INFO is all about. There is a distinct difference though between an object you DISPLAY/HIDE and an object you INSERT HIDE KEY and that has to do with whether or not the mapping is loaded. Hmm… I had thought hiding a key hides the info in the key itself, not the object to which the key referred. I'll take a look in the manual once I get offline….
#170129From: mark schneiderMay 15, 1995 12:48 PM
Hi Jerome, well, if this works, I'd be amazed, because I did not know this existed, I'll have to ask a few friends. thanks, let me know also if you find out. Have you actually done this ? Mark.
#170200From: Jerome R. KaliszMay 15, 1995 10:57 PM
>>Hi Jerome, well, if this works, I'd be amazed, because I did not know this existed, I'll have to ask a few friends. thanks, let me know also if you find out. Have you actually done this ? Mark. Hmm… my apologies, but what was the particular comment about that you're referring to? I have made a few, and can't immediately place that one. Will try scanning the cf for my earlier entry in the thread… -JK
#170343From: mark schneiderMay 16, 1995 5:02 PM
Hi Jerome, We were talking about 3ds being able to start rendering or stop rendering an object a a certain frame. As far as I know this does not exist. You said it may, hmmm, … Mark.!
#170393From: Jerome R. KaliszMay 16, 1995 8:46 PM
>>We were talking about 3ds being able to start rendering or stop rendering an object a a certain frame. As far as I know this does not exist. You said it may, hmmm, … Right, I looked back and found that. I'm sure you saw the pursuant message. I'd like to hear more about techniques people are using to save time on unseen objects and jumping from camera to camera during an animation sequence.
#170202From: Jerome R. KaliszMay 15, 1995 11:13 PM
Ok, I dug it up – luckily, it was still around 😉 Ok, I was talking to you about wishing to be able to make certain objects appear and disappear throughout an animation. you said you didn't know this existed. That was my point. I haven't discovered that it does. There was a comment about using the HIDE KEY command, which I have yet to look up in the manual and play around with, so I can't vouch for its merits yet. As I said, what I've done so far with such objects as light has been to keep their falloff at a minimum until just before the camera enters the room, then quickly expand it to where I want it. I have yet to find out the BEST method for switching from one camera to another in the middle of an animation without rendering in seperate segments. This would be a nice little VP feature, which would allow cross fades from one angle to another without seperate renderings from each camera and re-rendering. -JK
#169903From: Jeffrey LererMay 13, 1995 7:30 AM
Mark: further to my reply about Hide Key. We are probably getting a few concepts entangled here. I'll try to make some sense, and address the "dummies under the scene", mentioned earlier. Hide Key is very useful in all sorts of keyframing tricks, but I believe that the renderer still loads the maps of an object, though it is in a Hidden Key State. On the other hand, DISPLAY/HIDE takes an object out of a scene, and it's maps are ignored. So… this is where my Dummy-Hidders and Base Grid come in handy. Before constructing a project I create a series of dummies that correspond to different sectors of my project. By Parenting sector dummies to all objects in corresponding sector I can hide and unhide large portions of a scene very quickly. This is very useful when testing, tweaking and whatnot. Then, when i am at the output render stage, it is very easy to DISPLAY/HIDE entire sections of my scene. The Base Grid is just a cheap trick so I can find where I am very quickly, regardless of orthogonal tendency to GET LOST. Under my entire scene is a wide spaced grid that is actually made up of quadrants, each quadrant gets a different color assignment. So, at a glance, I can see from any orthogonal view, where in Orthogonal Hell I am. The 9 quadrant grid is easily hidden and unhidden, and really comes in handy. It recieves no shadows, casts no shadows, excluded from all lights and is totally transparent… so if it is ever "visible" to a view render, it poses no problem. However, it is usually hidden when I'm at a tweak/render/tweak level. Sheeeeesh, now that I'm typing this it is making me aware of a bunch of little tricks I use to deal with XYZ disorientation… little pointers up down and around etc etc etc. hahahha Jeffrey
#169969From: mark schneiderMay 13, 1995 8:03 PM
Hi Jeff, ahh, now I understand! that is a very neat trick, I'm going to try this, so wha you actually do is kind of link all the objects say in room-a to a master object dummy-a, all objects in room-b to dummy-b, then on hiding dummy-b it in turn hides every in room-b !! that is pretty good!, never thought of this. I can see how in a project with 100 items or even 20 items. thanks for the tip! Mark.
#170004From: Jeffrey LererMay 14, 1995 6:23 AM
Mark – glad you liked the D-hides (can also be used to freeze/unfreeze huge portions of set). A couple of years ago I just stopped everything i was doing and spent about 3 days just organizing some coherent methodology so that this 3-DS world could be kept reasonable. Naming conventions, color assignments, unit size and global coordinates, dummy layers and on and on. Still tweak at the basic structure, but it really helped keep my head on straight. Jeffrey
#170022From: Jerome R. KaliszMay 14, 1995 11:14 AM
Very GOOD point. That's one thing I was wondering about in the process of doing walk-thrus. Very often, the camera will be in one particular room, and only those objects need to be considered for rendering. What's more, all the various ray-traced lights, etc. that might exist in other rooms are likewise unneccesary. Nonetheless, their existence in other parts of the scene greatly increases rendering time. I would like to see an ability to switch thesse objects on and off throughout the animation, just like you can DISPLAY/HIDE and DISPLAY/UNHIDE objects in a more gobal sense. That way, lights that are only visible in one particular room can be left off, furniture in that room may be left hidden until you enter that room, thus saving MOUNDS of computation time. So far, how I've been getting around this has been laborious. I've been choosing ssequences that I render seperately, and turn off the uneeded objects and lights globally before rendering the segment. As for ray-traced lights, etc., I have tended to keep their falloff value at a minimum until the camera enters the room (or – just before), then adjust the falloff to the needed value until after the camera leaves. Obvioussly, this can be done with proper keyframing. However, being able to flick ocjects and lights into and out of existence would be IMMENSELY helpful in architectural walk-thrus. I also wonder – this may be a basic question here, but is there a way to switch from one camera to another in the middle of an animation? -JK
#170752From: Marion K. MarksMay 18, 1995 12:21 PM
Mark, you're correct that 3DS renders everything within the FOV of the camera, regardless of whether it is blocked by other objects or not. The reason for this is simple: transparency. 3DS has no way of knowing whether a given object will be at all visible through layers of objects in "front" of it which may or may not have transparency (remember opacity maps!) applied to them, or may have "holes" in them, etc. In order to determine whether opacity maps (such as windows in your hypothetical house) might allow some "behind" objects to be partially or fully seen, 3DS would have to apply the opacity maps ANYWAY. The computations that would be required to handle this for every pixel would be quite extensive, and slow enough that it would eat up whatever would be saved. Thus there is no performance benefit of doing it that way. 3DS uses a Z-buffer, by which it knows how far away from the camera each pixel of each object is, ranging from 0 for the background to a very high number for an item right at the camera location. 3DS makes the pixel the color of the object (counting maps, lighting, etc.) whose Z-buffer value for that pixel is the highest, and thus the closest to the camera, unless there is any transparency or opacity for that object involved at that pixel. If so, it has to compute the next closest object's pixel as well, and so on, and either subtract them or add them together (based on the type of transparency) to generate the final color of that pixel. This is why transparency slows down rendering so much, and the more layers of transparency you have, the slower it gets. Release 3 added "Hide Keys" in the Keyframer which do precisely what you want, albeit not automatically. It should be possible to write a .KXP or even a KeyFramer Script (using the Release "4"-included TSE-BASIC for KXP scripting module) to compute Hide keys for objects outside the camera FOV or behind other objects if you know there are no transparency or "holes" or opacity maps in your scene. Such a script shouldn't be too hard to write. I may try my hand at it, or someone else may want to jump in and do it.
#170777From: Jonas Ruikis [ADESK]May 18, 1995 2:32 PM
Hi M&M, << 3DS uses a Z-buffer, by which it knows how far away from the camera each pixel of each object is.. >> I believe that 3DS *provides* a Z-buffer to IPAS programmers but uses an A-buffer internally. Because the Z-buffer operates in image precision, it is subject to aliasing. The A-buffer addresses this problem by using a discreet approximation to unweighted area sampling.
#171684From: Marion K. MarksMay 24, 1995 2:27 PM
You are correct, Jonas. I was simplifying the situation. I know about the A-buffer as opposed to Z-buffer, but that's internals and isn't germane to the discussion on IPAS routines since the A-buffer isn't made available to them.
#170867From: mark schneiderMay 18, 1995 10:31 PM
Hi M&M Concept, melts on the computer screen, not on your keyboard Thanks very much for the info on this subject, concerning hide keys, etc, having everyone jump into this really helps people out. thank YOU! … On the subject of IPAS routines, download the MEIER.ZIP, this is a super amazing IPAS routine from Mark A Meier, it is fully loaded, not crippled, and works like a charm, you may have seen my other message on this. Anyway, this routine can turn off lights turn them on, deletet, hide, show, make selection set, .. too much to explain, but just image by pointing to a light in a viewport, and right clicking your mouse, and pulling down, the light turn off or on!, they all work the same way, mouse click, pull the mouse, and it does what you want in a second. delete an ojbect, turn off a light, ect, anyway, I can't do this justice, an amazing IPAS routine, this routine does most of the most common commands you use daily. Mark.
#169846From: mark schneiderMay 12, 1995 7:01 PM
Hi Mark, Hmmm, don't know if I agree with you 100%, it partially does this but it is not 100% effecient at doing this YET, your turn he-he. Mark.
#169415From: James Coulter[Mindscape]May 10, 1995 11:01 AM
Here is one I think would be usefull. The idea is to overcome the repetitive-looking tiling on large areas when using a tiled texture. Here's what I have in mind: A .BXP . . . The users applies the mapping coordinates to the mesh and sets tiling to 1.0 in both x and y directions. The Mat.-Ed. material for that mesh will have the the BXP assigned in whatever slots are appropriate. The BXP has a dialog box that lets the user provide an IFL of a set of texture maps. There is also a place to enter the number of x and y "tiles" even though tiling really isn't going to happen in the usual sense. The BXP will take the user-supplied textures and tile them in a random way. For example lets say I have five brick textures, A thru E, that are almost (but not quite) identical and tile without seams. I want to apply these textures to a wall in a 3 x 5 tiling. the BXP would then tile in a matrix like this: ABCDE CEDBA ACDEB This gives the large brick wall a nice random brick look rather than the repetitive look that is hallmark to traditional tiling. There is another advantage to this method over a manual process: MEMORY. For example, say these five maps are each 100×100. Thats 30K uncompressed. The BXP would tile five of these maps randomly over ANY sized area and only consume 30K * 5 maps, or about 150K. Conversely, If I manually construct the matrix shown above, I would require at least a 500 x 300 map, which is 450K. Imagine the savings on a sphere tiled 100 x 100 !!! (Of course, there would be a _small_ overhead by the BXP, but the saving would still be tremendous). There are a number of uses for this BXP besides brick walls. One could easily crate a complex circuitry type pattern with four or five maps, or a maze-style pattern, or paint speckles, or whatever. If anyone is interested in developing such a BXP, I'd be willing to invest in the development. In any case, I'd like to see some feedback on this idea. (… and ten years of general programming experience tells me this can be coded inside of a week if you already know how to code BXPs. So I think there's a good ROI factor here.) — James — Choreo Motion —
#169549From: Matthew VaughnMay 11, 1995 12:04 AM
James, Sounds like a great idea! I have problems ( I assume like everyone ) with tiling things like brick walls, usually look great close. But from a distanse show repetitive banding. I wish that I could help with the programing, but I'm still learning scripting. When you get it done let us know, I already have several uses in mind. -Matt (Active Media Graphics) -Matthew Vaughn
#169657From: Marion K. MarksMay 11, 1995 4:56 PM
That's an excellent idea, and close to another one I had earlier, and the two could be merged! How about, in addition to what you suggested, the .BXP could perform random TRANSFORMS (rotation at random 90 increments combined with optional horizontal and/or vertical mirroring) on the cells? When used with properly-designed tiles that can tile seamlessly on all four edges regardless of which edges "connect" (such as sand or granite or woven cloth, etc.), there would be an effect of a much larger bitmap than is actually used! The two could be combined so that you could specify multiple tiles, and specify the rotations and mirrorings that each could handle and still appear seamless (if seamlessness is a concern — it wouldn't be for a brick wall or bathroom or ceiling tiles, etc. — such tiles could be, if square, rotated and mirrored in any manner without concern, while bricks and other non-square tiles could be rotated 180 but not 90 or 270 , while some other tiles might not tile well if mirrored vertically but do if mirrored horizontally — such limits could be specified in the controlling text file). A sample controlling file for floor tiling for a short hallway (10 tiles wide, 20 tiles long) with three specific 64×64 pixel tile images which could be rotated and mirrored in any manner might look like this: TOTAL-TILE = 10×20 EACH-TILE = 64×64 U-OFFSET-PER-ROW = 0 V-OFFSET-PER-COL = 0 TILE-1 = TILE1.GIF ROTATE ALL MIRROR ALL TILE 2 = TILE2.GIF ROTATE ALL MIRROR ALL TILE 3 = TILE3.GIF ROTATE ALL MIRROR ALL For a brick wall with four brick-image tiles at 64×16 pixels, each row shifted ? tile to the right from the previous row to simulate bricklaying, for a total wall size of 40 bricks wide by 20 bricks tall: TOTAL-TILE = 40×20 EACH-TILE = 64×16 U-OFFSET-PER-ROW = 0.5 V-OFFSET-PER-COL = 0 TILE-1 = BRICK1.TIF ROTATE 0,180 MIRROR ALL TILE 2 = BRICK2.TIF ROTATE 0,180 MIRROR ALL TILE 3 = BRICK3.TIF ROTATE 0,180 MIRROR ALL TILE 4 = BRICK4.TIF ROTATE 0,180 MIRROR ALL Unfortunately, it would NOT save on memory. .BXPs produce actual bitmaps that are the full size of whatever is needed, and uncompressed to boot. It would, however, save CONSIDERABLY on DISK space!
#169743From: James Coulter[Mindscape]May 12, 1995 2:06 AM
I think Rotate and Miror could simply be buttons in the Dialog Box, but your method has the advantage of specific controls. I like your additions. > Unfortunately, it would NOT save on memory. .BXPs produce actual bitmaps that are the full size of whatever is needed < Bummer. With all the programming experience I have (mostly custom database stuff) one would think I'd already be a 3DS developer. I hope to dig into that realm sometime after R5 — dollars permitting. — James — Choreo Motion —
#170751From: Marion K. MarksMay 18, 1995 12:21 PM
Uh, Rotate and Mirror can't be buttons in the Dialog Box, for the simple reason that .BXPs can't have dialog boxes or any other user-interface (at least not directly, or without bypassing the API which would greatly interfere with future portability). They are bitmap file import/export filters ONLY. The usual workaround is to have a companion .PXP which presents a dialog box and saves parameters into a file which the .BXP then reads. Kaos Gradient Explorer for 3DS is an example of this. It has a .PXP with its nifty KPT-type user interface, which saves the gradient you design into a parameter file with a .GRA extension. Then a GRA.BXP actually reads that parameter file and generates the actual gradients you specified, creating the actual bitmaps to be used as maps, backgrounds, Video Post layers, etc.
#169777From: Jonas Ruikis [ADESK]May 12, 1995 10:33 AM
<< ..wishes.. >> got 'em.
#169850From: mark schneiderMay 12, 1995 7:01 PM
Jonas, Can you please comment on our comments about the texture mapping stuff, while rendering, even though the object is not in the camera view. How about my idea, about having an option in the keyframer … being able to click on any frame and a dialog box would pop up, and you would have the choice of being able to start or stop rendering a certain object, and the actual duration of the render. — Where would this be good ? … when rendering a model house .. you first render the outside, then you fly inside. Actually this would be the same as have an option that would be able to hide or show an object at a certain frame number. – This would be invoked through the keyframer. I have always though that this would be a very useful option. Imagine a fly through of a house, you start outside, then fly through the front door and into the kitchen. Well, rendering the kitchen and all it's kitchen items would be a waste, when you don't see them, but as your camera nears the kitchen, all of a sudden 3ds starts rendering the kitchen and it's items on the frame number you suggest. What do you think ? Could this be possible ? Thanks! Mark.
#169873From: Jonas Ruikis [ADESK]May 12, 1995 10:55 PM
Hi Mark, << What do you think ?.. >> It sounds very similar to how I currently use Hide keys for AXP's that are not relevant to the current camera position. jonas[adesk]