]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - docs/manual/Q3Rad_Manual/ch05/pg5_1.htm
error check and bail if permission denied during gamepack install
[xonotic/netradiant.git] / docs / manual / Q3Rad_Manual / ch05 / pg5_1.htm
1 <html>\r
2 <head>\r
3 <title>Q3Radiant Editor Manual: Page 5.1</title>\r
4 <link rel = "stylesheet" type = "text/css" href = "../styles/q3rad.css">\r
5 </head>\r
6 <body>\r
7 <h1 class = "MsoTitle">Q3Radiant Editor Manual</h1>\r
8 <hr>\r
9 <h1><a name = "tools2">Tools 2: Working with Brushes</a></h1>\r
10 \r
11 <p>The geometry brushes are the basic building block of the Quake\r
12 III Arena engine. These are the tools to make them work for\r
13 you.\r
14 \r
15 <h2><a name = "geohand">Geometry Brush Handling Tools</a></h2>\r
16 <div class = "subheading">Escape (ESC)</div>\r
17 This is the all-purpose deselect key. Use it to back out of\r
18 operations you don't want to complete or to stop working on a brush\r
19 or group of brushes.\r
20 \r
21 <p><div class = "subheading">Create New Brush</div>\r
22 \r
23 <div class = "menu">(Click mouse button 1)\r
24 <br>(Shortcut: none)</div>\r
25 \r
26 While mouse1 clicking over the main map window (or any open map\r
27 window) drag the mouse pointer across the grid. A brush will be\r
28 created that has the height of the current map grid size. If you\r
29 have the "snap to grid" function set in your preferences, the brush\r
30 will start and stop on gridlines. The texture will be either the\r
31 default texture (if none has been selected) or the most recently\r
32 used texture. For all these functions, you will first need to\r
33 select a brush in either the Map or Camera windows.\r
34 \r
35 <p><div class = "subheading">Move Geometry Brush</div>\r
36 \r
37 <div class = "menu">(Click mouse button 1)</div>\r
38 \r
39 The Undo command will return the brush to its original size (if\r
40 the brush is still selected). If the brush has been deselected, the\r
41 resized version will remain and another brush will be created at\r
42 full size.\r
43 \r
44 <ul><b>In the Map Window.</b> In the map window, select the\r
45 brush. Click on the selected brush. With the mouse 1 button\r
46 depressed move the brush around the map to the position you\r
47 desire.\r
48 \r
49 <br><b>In the Z (height) Window.</b> In the map window, select the\r
50 brush. Next, click on the selected brush in the Z window. With the\r
51 mouse 1 button depressed move the brush around the map to the\r
52 position you desire.\r
53 \r
54 <br><b>In the Camera Window.</b> Select a brush in the camera\r
55 window (see <b><i>select single component</i></b> above).\r
56 Mouse button 1 click on the brush and drag it in the desired\r
57 direction. You may need to adjust your camera view to make dragging\r
58 easier.</ul>\r
59 \r
60 <p><div class = "subheading">Stretching the Brush</div>\r
61 \r
62 <div class = "menu">(mouse1)</div>\r
63 \r
64 Think of this as stretching the brush. The Undo command will\r
65 return the brush to its original size (if the brush is still\r
66 selected). If the brush has been deselected, the resized version\r
67 will remain and another brush will be created at full size.\r
68 \r
69 <ul><b>In the Map Window.</b> In the map window, click next to the\r
70 selected brush on the side you want to pull. With the mouse 1\r
71 button depressed pull in a direction away from the nearest edge.\r
72 The brush will grow larger in that direction.\r
73 \r
74 <br><b>In the Z (height) Window.</b>  Use this to make the\r
75 brush taller. In the Map or Camera window, select the brush.\r
76 Next, click above or below the selected brush in the Z window. With\r
77 the mouse 1 button depressed pull away from the select brush. The\r
78 brush will grow in that direction.\r
79 \r
80 <br><b>In the Camera Window.</b> Select a brush in the camera\r
81 window (see <b><i>select single component</i></b> above).\r
82 Mouse1 click near the edge of the selected brush. With the mouse 1\r
83 button depressed pull in a direction away from the nearest edge.\r
84 The brush will grow larger in that direction. You may need to\r
85 adjust your camera view to make dragging easier.</ul>\r
86 \r
87 <p><div class = "subheading">Shrinking the Brush</div>\r
88 <div class = "menu">(mouse1)</div>\r
89 Think of this as crunching the brush smaller.\r
90 \r
91 <ul><b>In the Map Window:</b> In the map window, select the\r
92 brush. Click next to the selected brush on the side you want\r
93 to pull. With the mouse 1 button depressed pull in a direction\r
94 toward the nearest edge. The brush will shrink in that\r
95 direction.\r
96 \r
97 <br><b>In the Z (height) Window:</b> Use this to make the brush\r
98 shorter. In the Map or Camera window, select the brush. Next,\r
99 click above or below the selected brush in the Z window. With the\r
100 mouse button 1 depressed, push towards the select brush. The brush\r
101 will shrink in that direction.\r
102 \r
103 <br><b>In the Camera Window:</b> Select a brush in the camera window\r
104 (see <b><i>select single component</i></b> above). Mouse1\r
105 click near the edge of the selected brush. With the mouse 1 button\r
106 depressed push in a direction towards the nearest edge. The brush\r
107 will grow larger in that direction. You may need to adjust your\r
108 camera view to make dragging easier.</ul>\r
109 \r
110 <p><div class = "subheading">Flip Brush</div>\r
111 \r
112 <div class = "menu">(Menu: Selection &gt; Flip)</div>\r
113 \r
114 There are three separate actions here. They flip a brush\r
115 along either X, Y, or Z-axes. A menu command and toolbar button\r
116 controls each. The six flip and rotate toolbar commands are the\r
117 second grouping (from the left) on the toolbar. The rotate\r
118 command for the same axis is always next to the flip command.\r
119 Flipping will not change the facing on non-model entities.\r
120 \r
121 <ul><b>Flip X</b> (Menu: Selection) (Toolbar: Leftmost button)\r
122 \r
123 <br>\r
124 \r
125 Flips brush along x-axis.\r
126 \r
127 <br>\r
128 \r
129 <b>Flip Y</b> (Menu: Selection) (Toolbar: left of center\r
130 button)\r
131 \r
132 <br>\r
133 \r
134 Flips brush along y-axis.\r
135 \r
136 <br><b>Flip Z</b> (Menu: Selection) (Toolbar: second button from the\r
137 right)\r
138 \r
139 <br>\r
140 \r
141 Flips brush along z-axis.</ul>\r
142 \r
143 <p><div class = "subheading">Rotate Brush</div>\r
144 <div class = "menu">(Menu: Selection &gt; Rotate)</div>\r
145 \r
146 There are three separate actions here. They rotate a brush\r
147 in 90 degree increments around a brush's X, Y, or Z axes. Both a\r
148 menu command and toolbar button controls each action. The six flip\r
149 and rotate toolbar commands are the second grouping (from the left)\r
150 on the toolbar. The flip command for the same axis is always next\r
151 to the rotate command for the same axis. The rotation will not\r
152 change the facing on non-model entities.\r
153 \r
154 <ul><strong>\r
155 \r
156 Rotate X</strong>\r
157 \r
158 <div class = "menu">(Menu: Selection &gt; Rotate &gt; Rotate X)</div>\r
159 Rotates brush around the x-axis.\r
160 \r
161 <br><strong>\r
162 \r
163 Rotate Y</strong>\r
164 \r
165 <div class = "menu">(Menu: Selection &gt; Rotate &gt; Rotate Y)</div>\r
166 \r
167 Rotates brush around the y-axis.\r
168 \r
169 <br><strong>Rotate Z</strong>\r
170 \r
171 <div class = "menu">(Menu: Selection &gt; Rotate &gt; Rotate Y)</div>\r
172 Rotates brush around the Z-axis.</ul>\r
173 \r
174 <p><div class = "subheading">Arbitrary Rotation</div>\r
175 \r
176 The Rotate commands accessed from the toolbar all rotate\r
177 affected map components 90 degrees; no more, no less. Arbitrary\r
178 Rotation allows the user to set angles individually for the X, Y,\r
179 and/or Z-axes. Enter a number value for each axis you want to\r
180 rotate. Value can be positive or negative. After the values are\r
181 entered, select OK. This rotates the object and closes the pop-up\r
182 window. If you don't like the rotation, you can use Undo, so long\r
183 as the brush is still selected, and the brush will return to its\r
184 un-manipulated facing.\r
185 \r
186 <p><div class = "subheading">Free Rotate in Map Window</div>\r
187 <div class = "menu">(Shortcut: R)</div>\r
188 Press the "R" key. The selected map component(s) turns lavender.\r
189 The purple square at the center is the center of the selection and\r
190 the axis around which it will rotate. Left Mouse clicking on or\r
191 near the selected component (in the map or camera window) and\r
192 dragging will cause it to rotate. If the user does a SHIFT + middle\r
193 mouse button click on the 2D map window, the axis square will\r
194 relocate to the coordinates of the click. Deselecting and\r
195 reselecting the component returns the axis to its original\r
196 center.\r
197 \r
198 <p><div class = "subheading">Drag</div>\r
199 \r
200 There are two "drag" functions that involve control points or\r
201 "handles" on the brush.\r
202 \r
203 <ul><strong>Drag Edges</strong>\r
204 \r
205 <div class = "menu">(Menu: Selection &gt; Drag Edges)\r
206 \r
207 <br>(Shortcut: CTRL + E)</div>\r
208 \r
209 This highlights the edges of a geometry brush, marking those\r
210 edges with a blue "handle" box at the center of each side. Press\r
211 again and the feature will toggle off. Pull on a handle to resize\r
212 part of a brush. If <i>Snap-to-Grid</i> is active (Menu: Grid), the\r
213 handle will snap to the nearest grid coordinate as it is pulled.\r
214 Undo functions with this effect.\r
215 \r
216 <br><strong>Drag Vertices</strong>\r
217 \r
218 <div class = "menu">(Menu: Selection &gt; Drag Vertices)\r
219 \r
220 <br>(Shortcut: CTRL + V)</div>\r
221 \r
222 This highlights the corner vertices of a geometry brush, marking\r
223 those corners with a green "handle" box where the sides of each\r
224 brush face connect. Press again and the feature will toggle off.\r
225 Pull on a handle to resize part of a brush. If <i>Snap-to-Grid</i>\r
226 is active (Menu: Grid), the handle will usually snap to the nearest\r
227 grid coordinate as it is pulled. Undo does NOT function with this\r
228 effect.</ul>\r
229 \r
230 <p><div class = "tip"><strong>Design Note:</strong> Drag Vertices is a balky tool at best. It\r
231 works well if the user is manipulating a triangular brush face,\r
232 raising or lowering corners of the triangle. Work with care, it is\r
233 quite easy to pull a brush out of useable (or recoverable)\r
234 shape.</div>\r
235 \r
236 <p><div class = "subheading">Scale</div>\r
237 \r
238 <div class = "menu">(Menu: Selection &gt; Scale)</div>\r
239 \r
240 With Scale you can enlarge or reduce a brush, patch, or group of\r
241 brushes and patches. You choose the axes to scale (X, Y, or Z) and\r
242 the factor of the scale. The scaling factor can be different for\r
243 each axis. Selecting this option brings up a tool window. The size\r
244 of the brush or group of brushes is multiplied by the numbers in\r
245 the boxes adjacent to the X, Y, or Z axes. Leave the value as 1 and\r
246 no change occurs. If the value is a decimal less than one, the size\r
247 of that axis shrinks. If the value is greater than 1, it grows. Hit\r
248 OK to activate the scaling function with you chosen values. Undo\r
249 functions with this effect.\r
250 \r
251 <p><div class = "subheading">CSG Operations</div>\r
252 \r
253 CSG stands for "Constructive Solid Geometry". The two\r
254 functions here, <b><i>CSG Subtract</i></b> and <b><i>Make\r
255 Hollow,</i></b> calculate the removing of sections from that\r
256 geometry and breaking solid brushes (not curve patches) into\r
257 smaller pieces. Although they are convenient to use for some\r
258 operations, they often do things that the user may not care for.\r
259 These "side effects" can include breaking brushes into inconvenient\r
260 parts, cutting up adjacent brushes, and creating hard to find and\r
261 remove micro brushes.\r
262 \r
263 <p><strong>Subtract</strong>\r
264 <img src = "../Q3Rad_Manual_files/image022.png" width = 32 height = 30 align = "left" hspace = 2 vspace = 2><div class = "menu">(Menu: Selection &gt; CSG &gt; <u>S</u>ubtract)</div>\r
265 When you select this, the selected brush or brushes subtract its\r
266 volume from all the geometry that contacts it. The cutting brush is\r
267 not removed. Undo does not fix this action.\r
268 \r
269 <p><div class = "tip"><strong>Design Note:</strong> Region off together the brushes that will be\r
270 cut and the brushes which will be used for cutting. This keeps\r
271 other brushes in the map from being affected by the action. It's\r
272 also a good idea to save just before doing the action, so the user\r
273 can "back up" to an earlier version.</div>\r
274 \r
275 <p><strong>Hollow</strong>\r
276 \r
277 <img src = "../Q3Rad_Manual_files/image024.png" width = 32 height = 30 align = "left" hspace = 2 vspace = 2><div class = "menu">(Menu: Selection &gt; CSG &gt; <u>H</u>ollow)</div>\r
278 \r
279 When the user selects this, the sides of the highlighted brush\r
280 are turned into separate brushes. The thickness of these brushes is\r
281 equal to the grid size. Undo functions with this action.\r
282 \r
283 <p><div class = "tip"><strong>Design Note:</strong> This works best with rectangular\r
284 brushes. The edges of the created brushes overlap each\r
285 other.</div>\r
286 \r
287 <p><strong>Merge</strong>\r
288 <img src = "../Q3Rad_Manual_files/image026.png" width = 32 height = 30 align = "left" hspace = 2 vspace = 2><div class = "menu">(Menu: Selection &gt; CSG &gt; Merge)</div>\r
289 When the user selects this, the highlighted brushes are turned\r
290 into a single, convex brush. If the result of the merge would not\r
291 create a convex brush, the following message appears in the editor\r
292 console: " Cannot add a set of brushes with a concave hull."\r
293 \r
294 <p><b>Examples:</b> Example "<b>A</b>" shows two brushes can be\r
295 merged together. Example "<b>B"</b> shows two brushes that cannot\r
296 merge.\r
297 \r
298 <p align = "center"><img src = "../Q3Rad_Manual_files/image028.png" width = 383 height = 256 alt = "image028.png">\r
299 \r
300 <p><div class = "subheading">Clipper</div>\r
301 \r
302 <img src = "../Q3Rad_Manual_files/image030.png" width = 32 height = 30 align = "left" hspace = 2 vspace = 2><div class = "menu">(Menu: Selection &gt; Clipper)\r
303 \r
304 <br>(X toggles the clipper tool on or off)</div>\r
305 \r
306 If you think of this tool as being near the same as the miter\r
307 box that a carpenter uses to cut wood or moldings, then you are not\r
308 far from the truth.\r
309 \r
310 <p><strong>Placing Clip Points</strong>\r
311 \r
312 <br>Clip points are placed in the map views by two methods:\r
313 \r
314 <div class = "menu">(Mouse button 1 after Clipper has been toggled on)\r
315 \r
316 <br>(CTRL + Mouse button 2 at any time)</div>\r
317 \r
318 <p>The figure below shows a square brush that has been "clipped"\r
319 from the lower left (point 1) to the upper right (point 2). The\r
320 editor creates a line between the first point and the second point.\r
321 The piece to be kept when the brush is cut is always created in a\r
322 clockwise direction from the line (assuming that the first point is\r
323 the center of the "clock")\r
324 \r
325 <p>In a two-point clip (shown here), the cut occurs perpendicular\r
326 (at a 90 degree angle) from the plane of the map view. Adding a\r
327 third point, and adjusting its position in a different map view can\r
328 change the angle of the cutting plane. This will take practice to\r
329 master.\r
330 \r
331 <ul><strong>Toggle Clipper</strong>\r
332 \r
333 <div class = "menu">(Menu: Selection &gt; Clipper &gt; Toggle Clipper)\r
334 \r
335 <br>(X)</div>\r
336 \r
337 This toggles the Clipper function on and off. After completing a\r
338 cut, the tool remains active and must be toggled off before another\r
339 brush is selected.\r
340 \r
341 <br><strong>Clip Selection</strong>\r
342 \r
343 <div class = "menu">(Menu: Selection &gt; Clipper &gt; Clip Selection)\r
344 \r
345 <br>(SHIFT)</div>\r
346 \r
347 If the "clip selection" action is completed the red portion of\r
348 the brush will be discarded and only the yellow will remain. The\r
349 brush is unselected. Undo currently returns the original brush and\r
350 keeps the clipped off piece.\r
351 \r
352 <br><strong>Split Selection</strong>\r
353 \r
354 <div class = "menu">(Menu: Selection &gt; Clipper &gt; Split Selection)\r
355 \r
356 <br>(SHIFT + CTRL)</div>\r
357 \r
358 If the "split selection" action is completed the red and yellow\r
359 portions of the brush will remain, split into two triangular\r
360 brushes. The brush is unselected.\r
361 \r
362 <br><strong>Flip Clip Orientation</strong>\r
363 \r
364 <div class = "menu">(Menu: Selection &gt; Clipper &gt; Flip Clip\r
365 Orientation)</div>\r
366 The yellow and red hi-lights toggle so what was red is now\r
367 yellow and what was yellow is now red.</ul>\r
368 \r
369 <p><div class = "subheading">Make Detail</div>\r
370 \r
371 <div class = "menu">(Menu: Selection &gt; Make Detail)\r
372 \r
373 <br>(Shortcut: CTRL + M)</div>\r
374 \r
375 In <i>Quake 2,</i> this was a surface flag. In <i>Quake III\r
376 Arena,</i> it is used on the brush itself. Detail makes a brush\r
377 non-structural. This means that it cannot be used to seal the hull\r
378 of the map world. Don't use it for wall, floors, or ceilings. If it\r
379 is used as a hull, the map will "leak" when compiled. But it can be\r
380 used on things that jut out away from the walls (as long as there\r
381 is a structural brush behind it).\r
382 \r
383 <p>Detail has two beneficial effects:\r
384 \r
385 <p>1. Detail brushes are less likely to cause additional cuts to\r
386 occur in non-detail brushes that they touch ... thus reducing\r
387 triangle counts. This can help reduce frame rate.\r
388 \r
389 <p>2. When the compiler does Vis, it breaks the world up into many\r
390 small volumes. Any break in the surface of the box that forms a\r
391 room creates additional volumes that must be. Detail brushes don't\r
392 create these breaks. Therefore, using them speeds up compiling.\r
393 \r
394 <p><div class = "subheading">Make Structural</div>\r
395 \r
396 <div class = "menu">(Menu: Selection &gt; Make Structural)\r
397 \r
398 <br>(Shortcut: none)</div>\r
399 \r
400 Structural is the Default State for brushes. Textures that are\r
401 not manipulated by shader scripts to be transparent or non-solid)\r
402 do not change this. Essentially, this is a <i>change-it-back</i>\r
403 command for Make Detail. It removes the detail flag from the brush.\r
404 This surface WILL block Vis when the map is compiled (so long as\r
405 there isn't shader content that says otherwise).\r
406 \r
407 <p><div class = "subheading">Func_Group</div>\r
408 \r
409 <div class = "menu">(Entity Window &gt; Func_Group &gt; Enter)</div>\r
410 \r
411 Technically, this is a b_model (brush model) entity. However,\r
412 it's a great way to manage and handle related groups of map\r
413 components for ease of selection. To use, select the brushes\r
414 and patches you want to group and then open the Entity window\r
415 (press "N"). Click on the entity list sub-window and type in "F" to\r
416 move to the top of the "funcs". Double-click on Func_Group and all\r
417 the brushes and patches selected are bound together into a group.\r
418 Select one and you select them all.\r
419 \r
420 <p><strong>Thumb through Components</strong>\r
421 \r
422 <br>(Shortcut: TAB)</div>\r
423 \r
424 When you have a Func_Group b_model entity selected, press the\r
425 TAB key to "thumb" through the component pieces, hi-lighting them\r
426 individually, one at a time. This allows you to work on part of a\r
427 multi-piece group without having to work on all pieces\r
428 \r
429 <p><div class = "subheading">Find Brush</div>\r
430 \r
431 <div class = "menu">(Menu: Misc &gt; Find Brush)</div>\r
432 \r
433 Find brush allows you to locate a brush in the map by its\r
434 identifying number. As the map is built, the editor assigns\r
435 identification numbers to each map component. For brushes (and\r
436 patches) these include an Entity number and a brush number. For any\r
437 brush that is not part of a brush model (b_model), the entity\r
438 number is zero (0). Each b_model will have it's own number.\r
439 \r
440 <p>When the compiler outputs error messages in the console and\r
441 junk.text file, an identification number will call out brushes with\r
442 problems. Be prepared for them. Even when you do things right, you\r
443 will get error messages.\r
444 \r
445 <p>Selecting Find brush pops up a dialogue window with two fields.\r
446 The first field is the entity number. For most brushes, this will\r
447 be zero. The second number is the brush's individual number.\r
448 Selecting "OK," jumps the 2D map window(s) to the selected\r
449 component and hi-lights it.\r
450 \r
451 <p><div class = "subheading">Brush scripts&hellip;</div>\r
452 \r
453 <div class = "menu">(Menu: Edit &gt; Brush scripts&hellip;)\r
454 \r
455 <br>(Shortcut: none)</div>\r
456 \r
457 The command allows you to perform multiple step operations that\r
458 manipulate a single brush. Currently, only two of the list scripts\r
459 function.\r
460 \r
461 <p><table>\r
462 <tr valign = "top">\r
463         <td><b>BuildSpiral</b></td>\r
464         <td width = "90%">This walks you through the steps of building a spiral staircase.\r
465 Select a brush, then click on the map to locate the spiral origin.\r
466 Click again to bring up a dialogue window that prompts you to enter\r
467 the number of steps, the angle of rotation, and the height of each\r
468 step.</td>\r
469 </tr>\r
470 <tr>\r
471         <td><b>\r
472         BuildStep</b></td>\r
473         <td width = "90%">This clones the selected brush and moves it +X 16 units and +Z 8\r
474 units.</td>\r
475 </tr>\r
476 </table>\r
477 \r
478 <h2><u>B</u>rush Menu Commands</a></h2>\r
479 \r
480 The Brush menu lets the mapmaker convert a selected brush into a\r
481 brush of a different shape. Most of the commands change the number\r
482 of sides that the brush possesses. It will also change the brush to\r
483 a single color. There are individual commands for three through\r
484 nine sides. The brush will be given the number of sides indicated\r
485 by the command (Plus top and bottom). The "top" facing is always\r
486 relative to the view in which it is created. The sides are always\r
487 at right angles to the view facing.\r
488 \r
489 <p><div class = "subheading">Poly-Sided Brushes</div>\r
490 \r
491 <table class = "menu">\r
492 <tr>\r
493 <td>3\r
494 sided</td>\r
495 <td>(Menu: Brush &gt; 3\r
496 sided)</td>\r
497 <td>(Shortcut: CTRL + 3)</td>\r
498 </tr>\r
499 <tr>\r
500 <td>4\r
501 sided</td>\r
502 <td>(Menu: Brush &gt; 4\r
503 sided)</td>\r
504 <td>(Shortcut: CTRL + 4)</td>\r
505 </tr>\r
506 <tr>\r
507 <td>5\r
508 sided</td>\r
509 <td>(Menu: Brush &gt; 5\r
510 sided)</td>\r
511 <td>(Shortcut: CTRL + 5)</td>\r
512 </tr>\r
513 <tr>\r
514 <td>6\r
515 sided</td>\r
516 <td>(Menu: Brush &gt; 6\r
517 sided)</td>\r
518 <td>(Shortcut: CTRL + 6)</td>\r
519 </tr>\r
520 <tr>\r
521 <td>7\r
522 sided</td>\r
523 <td>(Menu: Brush &gt; 7\r
524 sided)</td>\r
525 <td>(Shortcut: CTRL + 7)</td>\r
526 </tr>\r
527 <tr>\r
528 <td>8\r
529 sided</td>\r
530 <td>(Menu: Brush &gt; 8\r
531 sided)</td>\r
532 <td>(Shortcut: CTRL + 8)</td>\r
533 <tr>\r
534 <td>9\r
535 sided</td>\r
536 <td>(Menu: Brush &gt; 9\r
537 sided)</td>\r
538 <td>(Shortcut: CTRL + 9)</td>\r
539 </tr>\r
540 </table>\r
541 \r
542 <p><div class = "subheading">Arbitrary sided&hellip;</div>\r
543 \r
544 <div class = "menu">(Menu: Brush &gt; Arbitrary sided&hellip;)</div>\r
545 \r
546 This command opens a dialogue window. You can enter a number of\r
547 sides in the field from 3 to 64. Select OK to execute the\r
548 command.\r
549 \r
550 <p><div class = "subheading">Primitives</div>\r
551 \r
552 <div class = "menu">(Menu: Brush &gt; Primitives)</div>\r
553 \r
554 Primitives are pre-made shapes other than squares or the\r
555 polygonal multisided boxes made by the "number" sided brush\r
556 commands.\r
557 \r
558 <p><strong>Cone&hellip;</strong>\r
559 \r
560 <div class = "menu">(Menu: Brush &gt; Primitives &gt; Cone&hellip;)</div>\r
561 \r
562 This opens a pop-up dialogue window that lets you enter an\r
563 arbitrary number of sides. The height of the cone is equal to the Z\r
564 height of the brush. The cone is always made with its axis along\r
565 the Z-axis. At first, the radius of the base of the cone appears to\r
566 be unrelated, or at least unevenly related to the XY dimensions of\r
567 the brush from which it is transformed. However, if you make a four\r
568 sided brush, the point to point "diameter" of the resulting pyramid\r
569 is equal to the longest XY dimension of the brush. Starting the\r
570 same size brush as you used for the four-side cone, an eight-sided\r
571 cone fits neatly within the volume of the four-sided cone, four of\r
572 its sides congruent with the side planes of the four-sided cone. Do\r
573 the same for a 16 sided cone, and the same again for both a 32\r
574 sided cone. However, the number of sides seems to max out at\r
575 56.\r
576 \r
577 <p><strong>Sphere&hellip;</strong>\r
578 \r
579 <div class = "menu">(Menu: Brush&gt;Primitives&gt;Sphere&hellip;)</div>\r
580 \r
581 This opens a pop-up dialogue window that lets you enter an\r
582 arbitrary number of sides. The maximum number of sides, which the\r
583 editor seems willing to handle is 32.The diameter of the sphere, is\r
584 roughly equal to the length of the longest XY side of the brush\r
585 from which it is transformed. Attempts to create spheres with more\r
586 faces than 32 may result in the brush disappearing and becoming\r
587 infinitely tall. Use Undo to back up from this or hit backspace to\r
588 discard the brush.\r
589 \r
590 <p><strong>Torus&hellip;</strong>\r
591 \r
592 <br>Non functioniong command. No donuts for you!\r
593 \r
594 <h2><a name = "movebrush">Moving\r
595 Selected Brushes</a></h2>\r
596 \r
597 <div class = "subheading">Moving the Brush</div>\r
598 \r
599 These keys move the brush around the map in discrete map grid\r
600 increments.\r
601 \r
602 <ul><strong>Move Selection Down</strong>\r
603 \r
604 <div class = "menu">(Shortcut: Keypad MINUS)</div>\r
605 Each press moves the selected map component down along the\r
606 Z-axis by one grid position (at current grid setting). Not affected\r
607 by current 2D-map view.\r
608 \r
609 <p><strong>Move Selection Up</strong>\r
610 \r
611 <div class = "menu">(Shortcut: Keypad PLUS)</div>\r
612 Each press moves the selected map component up along the Z-axis\r
613 by one grid position (at current grid setting). Not affected by\r
614 current 2D-map view.</ul>\r
615 \r
616 <p><div class = "subheading">Nudging the Brush</div>\r
617 \r
618 These keys move the brush around the map in discrete map grid\r
619 increments. The movement is in terms of the selected window, not in\r
620 terms of XYZ coordinates.\r
621 \r
622 <ul><strong>Nudge Down</strong>\r
623 \r
624 <div class = "menu">(Shortcut: ALT + DOWN ARROW)</div>\r
625 \r
626 Each press moves the selected map component "down" the map view\r
627 by one grid position (at the current grid setting). The movement is\r
628 relative to the selected map view, not XYZ coordinates.\r
629 \r
630 \r
631 \r
632 <p><strong>Nudge Up</strong>\r
633 \r
634 <div class = "menu">(Shortcut: ALT + UP ARROW)</div>\r
635 \r
636 Each press moves the selected map component "up" the map view by\r
637 one grid position (at the current grid setting). The movement is\r
638 relative to the selected map view, not XYZ coordinates.\r
639 \r
640 <p><strong>Nudge Left</strong>\r
641 \r
642 <div class = "menu">(Shortcut: ALT + LEFT ARROW)</div>\r
643 \r
644 Each press moves the selected map component "left" the map view\r
645 by one grid position (at the current grid setting). The movement is\r
646 relative to the selected map view, not XYZ coordinates.\r
647 \r
648 <p><strong>Nudge Right</strong>\r
649 \r
650 <div class = "menu">(Shortcut: ALT + RIGHT ARROW)</div>\r
651 \r
652 Each press moves the selected map component "right" the map view\r
653 by one grid position (at the current grid setting). The movement is\r
654 relative to the selected map view, not XYZ coordinates.</ul>\r
655 \r
656 <p><div class = "subheading">Snap Selection To Grid</div>\r
657 \r
658 <div class = "menu">(Shortcut: CTRL + G)</div>\r
659 \r
660 If you are using the map grid to keep brushes in alignment, this\r
661 is a great tool. Rotated brushes and brushes that have had their\r
662 vertices tweaked can have vertices that no longer lie on map grid\r
663 intersections. This snaps the vertices to align with the\r
664 grid. Be warned that snapping to large grids may be hazardous\r
665 to the health of your brush (Snap and it's gone! But that's what\r
666 UNDO is for).\r
667 \r
668 <h2><a name = "brusheff">Efficient Brush Building\r
669 Techniques</a></h2>\r
670 \r
671 <p><em>Developed from a Quake 3 World online posting by\r
672 Astrocreep</em>\r
673 \r
674 <p>Compiling a map is a necessary evil. It takes time, it ties up\r
675 your processor, and in the early phases of map construction, comes\r
676 up with construction errors as often as not. Nothing you can do\r
677 about that &hellip; except the time thing. It is possible,\r
678 through more careful construction (or perhaps reconstruction) to\r
679 significantly reduce both map and bot compile times, and reduce map\r
680 and .bsp file sizes (the latter being important for downloads). The\r
681 following is based on reports written by Astrocreep that documents\r
682 his extensive work to streamline the compile on one of the id\r
683 sample maps.\r
684 \r
685 <p><div class = "subheading">Brush Construction</div>\r
686 \r
687 It cannot be overstressed. If you want shorter compile times and\r
688 small file sizes, efficient brush construction is "critical" in\r
689 building your map. There is one rule that stands above all:\r
690 \r
691 <p>\r
692 <b>DO NOT OVERLAP BRUSHES AT ANYTIME.</b>\r
693 \r
694 <p>No matter what you have to do to build your map, do not overlap\r
695 brushes. Overlapping means that all or parts of two or more\r
696 brushes share the same physical space. If brushes overlap, you can\r
697 expect to add time to your compiling, and add size to your .map,\r
698 .bsp and, .aas file sizes.\r
699 \r
700 <p>Efficient map construction means that all brushes butt up\r
701 against each other, but never intersect.\r
702 \r
703 <p><div class = "subheading">Brush Counts</div>\r
704 \r
705 The sample map to be reworked on had 1,100 brushes in it.\r
706 Without changing the layout or appearance of the map, Astrocreep\r
707 was able to remove 110, or 10% of the total brush count.\r
708 \r
709 <p>Learn how to do more with a single brush than with multiple\r
710 brushes. Evaluate your map after you complete initial construction\r
711 phases on all or part of it. Pick a part of the map, look at\r
712 the layout and ask yourself if you could do that with fewer\r
713 brushes. In all likelihood, nine times out of 10, the answer will\r
714 be yes.\r
715 \r
716 <p>If you make a structure out of three brushes (or whatever) and\r
717 have the same floor height and ceiling height (in some cases\r
718 heights can be different), look at it in the "top view". Can you\r
719 draw a line from each vertex and not cross out side of those three\r
720 brushes? If you can, then that grouping of three can become one\r
721 brush instead of three.\r
722 \r
723 <p><b>Example</b>: here's how the engine might look at this.\r
724 \r
725 <p>Using 3 square brushes, you have 18 faces (with a texture mapped\r
726 on each side) to be calculated. This doesn't take into\r
727 consideration the number of in-game triangle faces that those\r
728 brushes may generate. Even if two-thirds of those faces are not\r
729 being drawn, they are still being calculated by both the compile\r
730 process and the bot navigation compile process.\r
731 \r
732 <p>As compared to:\r
733 \r
734 <p>Using one brush (filling the same area), you have only 6 faces\r
735 to be calculated. Here, you are compiling only a third of the total\r
736 geometry. It should go faster.\r
737 \r
738 \r
739 <p>Efficient map construction means using fewer brushes to build\r
740 the world.\r
741 \r
742 <p><div class = "subheading">\r
743 Caulking</div>\r
744 \r
745 It is possible to even further reduce the number of brush faces\r
746 being calculated by applying a special non-drawing, but "solid"\r
747 texture called "caulk" (common/caulk) to surfaces that cannot be\r
748 seen in the game. When seen in the editor, this texture is a bright\r
749 garish pink. In the game, it does not draw at all. Apply caulk to\r
750 any brush face that either doesn't form the "shell" of the world or\r
751 can't be seen by a player during play. Doing this may not improve\r
752 your map's frame rate, but since your are telling the compiler that\r
753 as many as five of the six faces on a square brush don't have to be\r
754 calculated, it should have some significant effects on compile\r
755 times. As long as you do not have any brushes that "share" the same\r
756 space, caulking brushes should help reduce compile times. However,\r
757 if you use caulk on a brush that "shares" the space of another,\r
758 your compile time and all file sizes will actually increase.\r
759 \r
760 \r
761 <p>Astrocreep compiled the test level nearly 200 times, many of\r
762 those times were when he moved just a single brush, just to see\r
763 what would change. Caulking seems to help the <i>-light</i> phase\r
764 of compiling the most.\r
765 \r
766 <p>\r
767 Efficient map construction means caulking all unseen brush\r
768 faces.\r
769 \r
770 <p><div class = "subheading">Miscellaneous Tips</div>\r
771 \r
772 <b>Lights:</b> You can further improve compile times by careful\r
773 use of lights. Entity lights, especially LOTS of entity lights can\r
774 reduce compile time. If you need to reduce compiling time even more\r
775 look to this.\r
776 \r
777 <p><b>Clip brushes:</b> Clip brushes that have more than two sides\r
778 not touching another brush appear to increase compile times.\r
779 \r
780 <p><b>Hint brushes:</b> Use these only if you need to resolve a vis\r
781 problem. Using them can significantly add to compile times.\r
782 <p align = "center"><a href = "../ch04/pg4_1.htm">Back</a> | <a href = "../index.htm">Home</a> | <a href = "../ch06/pg6_1.htm">Next</a>\r
783 </body>\r
784 </html>