Jump to content


Photo

Creating a Robust Tram Script


64 replies to this topic

#26 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 28 May 2017 - 01:26 PM

I'm rereading my post and I think I forgot to mention that I had to create an identical spline (a backwards track) to run the opposite way. See as far as I know, the splines only have a starting point. From anything I've tried, they don't seem to support and kind of inversion methods. This runs in line with what Obsttorte was saying about using a spline for what it wasn't meant for. And believe me if I could find a smart and compact way for node based pathing to blend turns and pitch, I'd use them in a heartbeat.

 

So I'll back up a tad bit and explain what's causing that whole flip dilemma... .removeInitialSplineAngles()

 

This command is perfect for taking roll out of the func_mover_amodel. However, it has the unforeseen side affect of inverting pitch axis. Meaning you flip the wrong direction when moving on the same path (in reverse). This however is remedied by commenting out the, removeInitialSplineAngles() but then we return back to unpredictable roll on turns as well as the model realigning to face the newly introduced spline direction. My untested theory is that it may be resolved if the same model is mirrored (saved as an additional mesh) and toggled back and forth when either matching courses are plotted. It's too bad there wasn't a ready made command to just run a spline backwards, but I supposed floating cameras in DooM3 might have looked odd going the wrong way.  :P


  • teh_saccade likes this

Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#27 teh_saccade

teh_saccade

    Member

  • Member
  • PipPip
  • 482 posts

Posted 29 May 2017 - 11:48 AM

It appears you are suffering from the same problem I experienced when I was making the searchlights for a storeyard / warehouse section - the issue is the the movers rotate according to the spline.

Therefore it is necessary to create TWO catmulroms for the same mover, and ensure that one acts as the ante-rotation for the initial spline.

eg,

Spoiler

 

I'll see if I can find a map for this, so you can see the orientation of the two splines and how they work in order to keep the lights face outwards (or in your case, your train upwards).

 

The other option is to run a func_static as a mover and script accordingly - I've never tried this but it worked in D3 trains.


Edited by teh_saccade, 29 May 2017 - 12:20 PM.


#28 teh_saccade

teh_saccade

    Member

  • Member
  • PipPip
  • 482 posts

Posted 29 May 2017 - 12:19 PM

Your theory is correct that you must used the cats in the way you have described - I can't remember the exact set-up I used, as it was more than a week ago, but from the knock-up - it still works:

lamps.png

Two splines run in conjunction, one for the initial movement and another to control the pitch and roll of the movers (and anything bound) works well.

In this instance, a sweeping motion for a searchlight pattern was required, and so both splines had a slight up/down curve (as well as the 2nd ante-rotation in order to insure that the outward face [upwards face] always remain at the correct orientation):

Seems the while thing... I've forgotten... will have to re-read, as it is possible to see the cycle flick and repeat when the spline reaches its terminus.
Which would be no good for a train (or for a continuous searchlight, for that matter...).

It works well for pretty much anything (eg, a room, a CCTV camera, a maze, a platform, etc...) so long as there is a 2nd spline to make sure the 1st doesn't tip the object as it wants.

When I get back to this section of my campaign, I will investigate further and report any findings if you need them.
Similarly, since we are working towards the same goal (albeit, for different reasons), it would be appreciated if you might share you findings also (as it'd help me remember wtf I did and how I did it... :))

Here's the knock-up using the script and controlled by a switch that starts ON. I imagine that a tram would be a button operated trigger, similar to this, but player operated rather than operated by AI behaviour or set ON from start.

// video for spoiler


Edited by teh_saccade, 31 May 2017 - 07:34 PM.


#29 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 29 May 2017 - 12:40 PM

Right now I've been able to stabilize the path by making turns and inclines separate. I would like to point out that removeinitialSplineAngles() and disableSplineAngles() behave very differently. The only reason I wasn't able to use removeinitialSplineAngles() was because it inverted the incline angles when running the reversal spline. That is a really interesting usage you came up with. I feel like mine is much more simplified since it's just a two way mover.

What I'm shifting my focus to now has been making sure the buttons behavioral settings are correct. Say the button to start you out (forward) should only be able to trigger when at it's respective tram garage. When you reach the end of the track, the other button (backwards) should then be available. Neither button should ever be able to work at the same time and they can only fire once per trip.


Edited by Epifire, 29 May 2017 - 12:40 PM.

Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#30 teh_saccade

teh_saccade

    Member

  • Member
  • PipPip
  • 482 posts

Posted 29 May 2017 - 03:33 PM

Have you read the "multistop train ride tutorial"..?

http://www.doom3worl...opic.php?t=7579

 

Idk if that's what you're looking for - but maybe including a "wait" and  timing the train journey, so that the button cannot be pressed to reverse direction until it reaches the destination is an easy option..?



#31 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 29 May 2017 - 04:34 PM

I actually didn't see that part. Navigating the old saved pages was a little odd how it was all organized. It kinda flew past me when I was asking around but I realize now that I don't have to worry about the duration of the trip. This being because I'm using cameras and player interaction isn't possible. So that leaves the last bit of button sorting.

 

Can a button disable itself while enabling the other? It would just need to be in one press, as you wouldn't be able to use the other button until you came to a stop. It also would be worth mentioning that a negative press (inactive) would be great to have a snd attachment of some kind. The sound of course is extra fluff but in the end result I want to communicate to the player as best I can with glowing skins and so on.


Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#32 Destined

Destined

    Advanced Member

  • Member
  • PipPipPip
  • 1258 posts

Posted 30 May 2017 - 02:04 AM

If you are using a script, this should be no problem. You can just have a button1.setFrobable(0) and button2.setFrobable(1), when button 1 is pushed and vice versa for button 2. I am not 100% sure, if the syntax is right, but I hope you get, what I mean. This option would, however, exclude to play a sound, when you press the inactive button. The alternative would be to introduce a variable that you set and then a script with something like "if varable = 0: run mover (not sure, which command you use for that right now) and set variable = 1; if variable = 1: play sound" and "if varable = 1: run mover and set variable = 0; if variable = 0: play sound" for the second button.



#33 teh_saccade

teh_saccade

    Member

  • Member
  • PipPip
  • 482 posts

Posted 30 May 2017 - 10:51 AM

Reckon you can toggleLock on frobs to change their on/off position?

 

If you're not already using atdm:alarm, then perhaps this can be tied to the button, and re-jig that the alarm_sound is something like the dead button press and doesn't alert ai.

 

Was thinking about this and wondering if TDM uses stuff like getButtons ($trainbutton) and if you could then operate trainbutton while ( [float] trainmoving == 1 ) and all that malarky, but then I thought...

If it was a self-locking switch that only unlocked when the doors (or exit light) came on - then it would play the "clunk i'm locked" sound so long as the switch was down...

or instead of declaring that stuff like trainmoving, maybe something simple like, "while trainpathforwards (spline or $trainobject) isMoving then toggleLock ($trainbutton01); if operate ($trainbutton01) then startSound (buttonnotworking);"

 

Then I thought, fuck all that coding - why not have the buttons panel recessed in the train and have a locked panel slide over it when the doors close - pickable but totally unpickable (as in tststststststttttsssttttstststt) because it would take longer to pick (esp. with the train noise) than the journey (in case player is bored of sitting in a train without an iPhone) - and have it open again as the train reaches the destination, thereby not even having to turn the buttons off or on or anything like this? Simple <-- this way or --> this way that are closed in when not required, and provide a pointless distraction for the player who doesn't know they can't get to them, no matter how hard they try (which is always fun).

Total zero sums the whole problem of playing sounds and having lights and ensuring soundshaders are loaded, setting the channels to play the sound, etc... to push a button that isn't going to do anything but go "clunk" and not do anything anyway.

ps,

I'd make it so that if they pushed the dead button 88 times during the train journey then, "missionsuccess", because the player is obviously very impatient for the ride to be over and deserves a reward for clicking the button 88 times +10,000 loot.

 

I miss BASIC.



#34 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 02 June 2017 - 01:03 AM

So there seems to be a strange problem with the camera I'm porting the player view to while the tram is in motion. When I hit a button (forward or backward) the screen flashes into the set camera and then instantly returns back to player1. Stranger still, when the tram completes it's assigned path, the camera will become active (once the tram comes to a halt). If I noclip I return back the the original player1 position, though I have no movement. If I'm in range of the buttons when froze I can frob the buttons to run again. If I switch back on the second trip around the camera works flawlessly. So why is it behaving so strange the first time? Here's what the script looks like...

 

Spoiler

 

If I get this part working, I just need one more script that teleports the player off to the side of the tram when ever a button is pressed and when it comes to a stop. I'm not all sure as to how I kick the player out with a info_player_teleport yet, but I think that should be easy once I can figure out what can trigger it automatically. After that I'll worry about the active/inactive button flipflop modes.


Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#35 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 02 June 2017 - 05:28 AM

$mover_object.time(20);                     
$mover_object.accelTime(8);                
$mover_object.decelTime(3);
This stuff is only needed once. You don't have to execute this everytime (and I think you can set those as spawnargs on the mover_object directly)
 
Regarding the camera bug, place the camera activation command after the start spline command.
 
Player teleportation should work like this:
 
$player_teleport.activate($player1);
whereas player_teleport is the name of your info_player_teleport entity (this can differ).
  • Epifire likes this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#36 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 03 June 2017 - 12:51 AM

Okay this helps tremendously. So far I've corrected the issue of the player dying to collision interference. There's something still wonky about the camera. Right now (with this script) it just kicks the player out, runs the spline path and then places the player in the camera position when finished. I've been trying to move the lines around but it either does this or nothing at all.

void spline_path_forward()
{
	$tram_dismount_1.activate($player1);		//kicks the player away from the tram to avoid collision smashing
	$mover_object.startSpline($spline_forward);	//starts mover moving along spline
	$tram_camera_1.activate($player1);   		//switch view
	sys.waitFor($mover_object); 				//wait for func_mover to finish moving along spline before doing anything else	
	$tram_camera_1.activate($player1);   		//switch view
	$tram_dismount_1.activate($player1);		//kicks the player away from the tram to avoid collision smashing
}

void spline_path_backward()
{
	$tram_dismount_2.activate($player1);		//kicks the player away from the tram to avoid collision smashing
	$mover_object.startSpline($spline_backward);//starts mover moving along spline
	$tram_camera_1.activate($player1);   		//switch view
	sys.waitFor($mover_object); 				//wait for func_mover to finish moving along spline before doing anything else	
	$tram_camera_1.activate($player1);   		//switch view
	$tram_dismount_2.activate($player1);		//kicks the player away from the tram to avoid collision smashing
}

Getting really close now. Everything in my alterations really seems to depend on the lines whether it's ahead or behind the sys.waitFor function. It's like the camera can't activate ahead of it in the timeline.

 

ALSO, Obs while we're on the discussion of cameras. Would the keyhole-look mechanic you came up with be compatible for a vehicle attachment scenario like this? That would be ideal compared to the locked camera placement I'm working with now. Not the foremost concern but it would definitely be a much better option if possible.


Edited by Epifire, 03 June 2017 - 12:55 AM.

  • Anderson likes this

Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#37 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 03 June 2017 - 02:59 AM

Yeah, the security camera would work, too.

http://forums.thedar...hread/?p=349960


  • Anderson likes this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#38 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 03 June 2017 - 07:21 PM

Specifically this one was the one that caught my curiosity. Since (from my knowledge) allows some form of user input and control...

 

Right now I just want to get a working camera (even if it's just a static camera bound to the mover). Though if it had some form of mouse look that would be fantastic! Cause right now it's just a static camera view and I want it to feel more life like if I have the option.


  • Anderson and teh_saccade like this

Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#39 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 04 June 2017 - 02:42 AM

The mouse movement is captured via script functions (startMouseGesture, getMouseGesture). You can see how this works by checking out the script for the player sword.


  • Anderson likes this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#40 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 04 June 2017 - 01:53 PM

I may try and look into that. I just can't get the first initial $tram_camera_1.activate($player1); to activate. What am I doing wrong? Cause it'll kick in the last activation line after sys.wait but it ignors the first entry completely. So basically the camera will just always trigger when the tram comes to a stop now. I mean I feel like it's something brain numbingly simple at this point that I fail to see, because it almost works %100.


Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#41 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 04 June 2017 - 01:59 PM

Do you try to activate the camera directly after the mission starts? This can be an issue because the entities required might not have been spawned at that stage. Try including one or two

sys.waitFrame();

commands at the beginning.


FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#42 teh_saccade

teh_saccade

    Member

  • Member
  • PipPip
  • 482 posts

Posted 04 June 2017 - 02:46 PM

Specifically this one was the one that caught my curiosity. Since (from my knowledge) allows some form of user input and control...

 

Right now I just want to get a working camera (even if it's just a static camera bound to the mover). Though if it had some form of mouse look that would be fantastic! Cause right now it's just a static camera view and I want it to feel more life like if I have the option.

 
I had no idea this existed... Was trying something similar previous with portalsky and lots of fiddling for a mask, but gave up in the end - not managed to get security camera working as yet, but now realise forgot to include input get.

Would there be a way to include a resource to a prefab door[handle] that contains the function to peek through keyholes for dumb people such as myself?

All these things, I end up with mechanical solutions (eg, no draw "sticky" ladders instead of dismount $player)... no wonder my mapping is such a fucking mess and I'm constantly having to restart sections due to small errors.

 

Et maintenant, muss ich apprender otro idioma eto slozjhneye chem enkelt og greit Engish ($motivation <= 1).



#43 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 04 June 2017 - 03:31 PM

Do you try to activate the camera directly after the mission starts? This can be an issue because the entities required might not have been spawned at that stage. Try including one or two

sys.waitFrame();

commands at the beginning.

 

Both forward and backward are called up via a button. I tried adding this new wait line to the beginning but nothing so far. Would you be interested in fidgeting around with it yourself if I sent the testmap and script via PM? I feel like it's something dreadfully simple that I'm not yet seeing. I just want to resolve it at this point, because I've burned a lot of time over the past week without any improvement on the camera situation.

 

EDIT: Aight finally got it to work, though I had to break it up into four scripts that separate the start and ends through relays to handle forward and backward tracks. A couple more things to pack in DR but it works really good. Mouse look would be a next best option to look into as well as getting default button enable/disable set to prevent starting from the wrong end of the railway.


Edited by Epifire, 04 June 2017 - 10:28 PM.

Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#44 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 05 June 2017 - 02:22 AM

 Would there be a way to include a resource to a prefab door[handle] that contains the function to peek through keyholes for dumb people such as myself?

If I would ever had created such an entity, yes. I haven't had the time to finalize the setup yet. This video is just a proof of concept.


  • Epifire and teh_saccade like this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#45 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 05 June 2017 - 03:38 AM

If I would ever had created such an entity, yes. I haven't had the time to finalize the setup yet. This video is just a proof of concept.

 

Wouldn't happen to have an example of the core script running that concept would ya?  :P 

Obviously none of that could just be plopped in and used 1:1 but it would certainly be a step in the right direction. I know you'd said the player sword uses something for mouse tracking but I actually hadn't found where that was stored in the game archives.


Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#46 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 05 June 2017 - 11:10 AM

guis/keyhole.gui (referred by the script)

Spoiler

textures/darkmod/camera (mtr file)

Spoiler

the keyhole images are custom stuff, you don't need them (remove the specific stages in the gui).

The script (keyhole is called via a frob_action_script in my case)

Spoiler

Undocumented and unpolished as said, have fun :D

 

keyhole1 is the func_cameraview targeted by the patch in the above video.


  • Epifire and Anderson like this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#47 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 06 June 2017 - 09:26 PM

Thanks Obs! If I have the courage later I might try and attempt a heartier camera setup, but for now I'm just getting down to polishing the main controls. So for today I've made a collection of sounds to handle the tram's actions. Naturally start > move loop > stop. For some reason though the spawnargs for these functions don't seem to work on the func_mover_amodel. So I was resorting to adding them via script but I can't seem to get the right syntax. I did test the sounds via speaker btw, and they work fine in a normal (unscripted) instance.

void spline_path_forward()
{
	$tram_dismount_1.activate($player1);		//kicks the player away from the tram to avoid collision smashing	
	$mover_object.startSpline($spline_forward);	//starts mover moving along spline
	$mover_object.accelSound($tram_start);		//this sound handles when the tram starts moving
	$mover_object.moveSound($tram_loop);		//this sound loops as the mover is in transition
	$mover_object.decelSound($tram_stop);		//this sound plays when the tram is reaching it's end point
	sys.waitFor($mover_object); 			//wait for func_mover to finish moving along spline before doing anything else	
	$tram_dismount_1.activate($player1);		//kicks the player away from the tram to avoid collision smashing	
	$tram_camera_1.activate($player1);   		//switch view
}

I had checked the functions list to get these and I assumed the sound name would be in the latter portion. I hadn't been able to find any references with sounds ran via script control, but it feels rather stupid that this isn't working right now. I tried removing $ and just having something like (tram_stop) or (tram_stop.ogg) but no luck as of yet.


Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#48 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 07 June 2017 - 01:45 AM

The sound functions take the soundshader name as argument.

 

A general hint: The $ in front of a name means that the name refers to the name of an entity in the map, whereas leaving it away means it is the name of a variable defined in the script.


FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#49 Epifire

Epifire

    Member

  • Active Developer
  • PipPip
  • 388 posts

Posted 07 June 2017 - 12:13 PM

Well if I leave out the $, the game kicks me back to the menu saying it's an unknown value (tram_start). Though they're the same names listed to call up the sounds from the soundshader file, and work if I just pull those up on a speaker in DR.

 

Is there a symbol, specific to calling up soundshaders references? From what I'm seeing it's looking through the script and since I'm defining a shader reference (not a reference to another portion of the script) it chucks it.


Needing dem environment models?

 

Speak to the EPI!

 

Or rummage my online mesh repository instead...  https://www.mediafire.com/folder/7q1r8him1y63d/TDM%20Repository


#50 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5151 posts

Posted 07 June 2017 - 02:05 PM

The argument is supposet to be a string dude, so something like "this string". (Note the quotation marks ;) )


  • Epifire likes this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.



Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users