Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d71036e4a |
@@ -1,2 +0,0 @@
|
||||
# Try to tell GitHub how to handle .asc files
|
||||
*.asc linguist-language=Tcl
|
||||
@@ -1,260 +0,0 @@
|
||||
name: Prepare bext dependencies
|
||||
description: Restore a compatible bext production artifact or build the pinned revision.
|
||||
|
||||
inputs:
|
||||
platform-channel:
|
||||
description: Published bext platform channel.
|
||||
required: true
|
||||
source-dir:
|
||||
description: Absolute path to the BRL-CAD source tree.
|
||||
required: true
|
||||
output-dir:
|
||||
description: Absolute path where the bext dependency tree will be prepared.
|
||||
required: true
|
||||
build-type:
|
||||
description: BRL-CAD build configuration that will consume the dependency tree.
|
||||
required: false
|
||||
default: Release
|
||||
artifact-token:
|
||||
description: Token with Actions read access to BRL-CAD/bext.
|
||||
required: false
|
||||
|
||||
outputs:
|
||||
bext-sha:
|
||||
description: The bext revision in the prepared dependency tree.
|
||||
value: ${{ steps.result.outputs.bext-sha }}
|
||||
source:
|
||||
description: Whether preparation used a production artifact, cache, or local build.
|
||||
value: ${{ steps.result.outputs.source }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Resolve bext production artifact
|
||||
id: resolve
|
||||
shell: bash
|
||||
env:
|
||||
BEXT_BUILD_TYPE: ${{ inputs.build-type }}
|
||||
BEXT_CHANNEL: ${{ inputs.platform-channel }}
|
||||
BRLCAD_SOURCE_DIR: ${{ inputs.source-dir }}
|
||||
GH_TOKEN: ${{ inputs.artifact-token }}
|
||||
run: |
|
||||
set -uo pipefail
|
||||
source_dir="$BRLCAD_SOURCE_DIR"
|
||||
if command -v cygpath >/dev/null 2>&1; then
|
||||
source_dir="$(cygpath -u "$source_dir")"
|
||||
fi
|
||||
required_sha="$(awk -F'[()]' '/^[[:space:]]*brlcad_bext_init\([0-9a-fA-F]{40}\)/ { print tolower($2) }' "$source_dir/CMakeLists.txt")"
|
||||
if [[ ! "$required_sha" =~ ^[0-9a-f]{40}$ ]]; then
|
||||
echo "Expected exactly one brlcad_bext_init(<sha>) call in $source_dir/CMakeLists.txt" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
repository='BRL-CAD/bext'
|
||||
marker_name="bext-production-$required_sha"
|
||||
marker_info="$(gh api "repos/$repository/actions/artifacts?name=$marker_name&per_page=100" \
|
||||
--jq '[.artifacts[] | select(.expired == false and .name == "'"$marker_name"'")] | sort_by(.created_at) | last | select(. != null) | [.name, .workflow_run.id] | @tsv' 2>/dev/null)" || marker_info=''
|
||||
|
||||
selected_sha=''
|
||||
run_id=''
|
||||
if [[ -n "$marker_info" ]]; then
|
||||
selected_sha="$required_sha"
|
||||
IFS=$'\t' read -r _ run_id <<< "$marker_info"
|
||||
echo "Found complete bext production artifacts for pinned revision $required_sha."
|
||||
else
|
||||
marker_info="$(gh api "repos/$repository/actions/artifacts?per_page=100" \
|
||||
--jq '[.artifacts[] | select(.expired == false and (.name | test("^bext-production-[0-9a-f]{40}$")))] | sort_by(.created_at) | last | select(. != null) | [.name, .workflow_run.id] | @tsv' 2>/dev/null)" || marker_info=''
|
||||
if [[ -n "$marker_info" ]]; then
|
||||
IFS=$'\t' read -r latest_marker run_id <<< "$marker_info"
|
||||
selected_sha="${latest_marker#bext-production-}"
|
||||
comparison="$(gh api "repos/$repository/compare/$required_sha...$selected_sha" --jq '.status' 2>/dev/null)" || comparison=''
|
||||
if [[ "$comparison" == 'ahead' || "$comparison" == 'identical' ]]; then
|
||||
echo "::warning::Using newer successful bext revision $selected_sha instead of BRL-CAD's pinned revision $required_sha."
|
||||
else
|
||||
selected_sha=''
|
||||
run_id=''
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
artifact_ready=false
|
||||
artifact_name=''
|
||||
if [[ "$RUNNER_OS" == 'Windows' && "$BEXT_BUILD_TYPE" == 'Debug' ]]; then
|
||||
echo 'Windows Debug requires a Debug bext build; skipping Release production artifacts.'
|
||||
selected_sha=''
|
||||
run_id=''
|
||||
elif [[ -n "$selected_sha" ]]; then
|
||||
artifact_name="bext-$BEXT_CHANNEL-$selected_sha"
|
||||
artifact_count="$(gh api "repos/$repository/actions/runs/$run_id/artifacts?name=$artifact_name&per_page=100" \
|
||||
--jq '[.artifacts[] | select(.expired == false and .name == "'"$artifact_name"'")] | length' 2>/dev/null)" || artifact_count=0
|
||||
if [[ "$artifact_count" == '1' ]]; then
|
||||
artifact_ready=true
|
||||
else
|
||||
selected_sha=''
|
||||
run_id=''
|
||||
artifact_name=''
|
||||
fi
|
||||
fi
|
||||
|
||||
cache_schema=1
|
||||
image_version="${ImageVersion:-unknown}"
|
||||
runner_arch="${RUNNER_ARCH:-unknown}"
|
||||
fallback_cache_key="bext-$cache_schema-$BEXT_CHANNEL-$BEXT_BUILD_TYPE-$required_sha-$image_version-$runner_arch"
|
||||
production_cache_key="bext-$cache_schema-$BEXT_CHANNEL-Release-$selected_sha"
|
||||
if [[ "$artifact_ready" != 'true' ]]; then
|
||||
echo "No compatible production artifact is available; using the cache/build fallback for $required_sha."
|
||||
fi
|
||||
|
||||
echo "required-sha=$required_sha" >> "$GITHUB_OUTPUT"
|
||||
echo "selected-sha=$selected_sha" >> "$GITHUB_OUTPUT"
|
||||
echo "run-id=$run_id" >> "$GITHUB_OUTPUT"
|
||||
echo "artifact-name=$artifact_name" >> "$GITHUB_OUTPUT"
|
||||
echo "artifact-ready=$artifact_ready" >> "$GITHUB_OUTPUT"
|
||||
echo "production-cache-key=$production_cache_key" >> "$GITHUB_OUTPUT"
|
||||
echo "fallback-cache-key=$fallback_cache_key" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Restore production artifact cache
|
||||
if: steps.resolve.outputs.artifact-ready == 'true'
|
||||
id: production-cache
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: ${{ inputs.output-dir }}
|
||||
key: ${{ steps.resolve.outputs.production-cache-key }}
|
||||
|
||||
- name: Download bext production artifact
|
||||
if: steps.resolve.outputs.artifact-ready == 'true' && steps.production-cache.outputs.cache-hit != 'true'
|
||||
id: download
|
||||
shell: bash
|
||||
env:
|
||||
ARTIFACT_NAME: ${{ steps.resolve.outputs.artifact-name }}
|
||||
BEXT_CHANNEL: ${{ inputs.platform-channel }}
|
||||
BEXT_OUTPUT_DIR: ${{ inputs.output-dir }}
|
||||
BEXT_RUN_ID: ${{ steps.resolve.outputs.run-id }}
|
||||
GH_TOKEN: ${{ inputs.artifact-token }}
|
||||
run: |
|
||||
set -uo pipefail
|
||||
output_dir="$BEXT_OUTPUT_DIR"
|
||||
if command -v cygpath >/dev/null 2>&1; then
|
||||
output_dir="$(cygpath -u "$output_dir")"
|
||||
fi
|
||||
download_dir="$RUNNER_TEMP/bext-download-$BEXT_RUN_ID-$BEXT_CHANNEL"
|
||||
cmake -E rm -rf "$download_dir" "$output_dir"
|
||||
cmake -E make_directory "$download_dir" "$output_dir"
|
||||
|
||||
ready=false
|
||||
if gh run download "$BEXT_RUN_ID" --repo BRL-CAD/bext --name "$ARTIFACT_NAME" --dir "$download_dir"; then
|
||||
archive="$download_dir/bext-$BEXT_CHANNEL.tar.gz"
|
||||
if (cd "$output_dir" && cmake -E tar xzf "$archive") && \
|
||||
[[ -d "$output_dir/install" && -d "$output_dir/noinstall" && -f "$output_dir/bext-install-manifest.json" ]]; then
|
||||
ready=true
|
||||
fi
|
||||
fi
|
||||
cmake -E rm -rf "$download_dir"
|
||||
if [[ "$ready" != 'true' ]]; then
|
||||
cmake -E rm -rf "$output_dir"
|
||||
echo '::warning::Unable to download or validate the bext production artifact; using the pinned cache/build fallback.'
|
||||
fi
|
||||
echo "ready=$ready" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Restore fallback bext cache
|
||||
if: steps.production-cache.outputs.cache-hit != 'true' && steps.download.outputs.ready != 'true'
|
||||
id: fallback-cache
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: ${{ inputs.output-dir }}
|
||||
key: ${{ steps.resolve.outputs.fallback-cache-key }}
|
||||
|
||||
- name: Build pinned bext revision
|
||||
if: steps.production-cache.outputs.cache-hit != 'true' && steps.download.outputs.ready != 'true' && steps.fallback-cache.outputs.cache-hit != 'true'
|
||||
shell: bash
|
||||
env:
|
||||
BEXT_BUILD_TYPE: ${{ inputs.build-type }}
|
||||
BEXT_OUTPUT_DIR: ${{ inputs.output-dir }}
|
||||
BEXT_SHA: ${{ steps.resolve.outputs.required-sha }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
output_dir="$BEXT_OUTPUT_DIR"
|
||||
if command -v cygpath >/dev/null 2>&1; then
|
||||
output_dir="$(cygpath -u "$output_dir")"
|
||||
fi
|
||||
source_dir="$RUNNER_TEMP/bext-src"
|
||||
build_dir="$RUNNER_TEMP/bext-build"
|
||||
cleanup() {
|
||||
cmake -E rm -rf "$source_dir" "$build_dir"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
cleanup
|
||||
cmake -E rm -rf "$output_dir"
|
||||
|
||||
git clone --filter=blob:none https://github.com/BRL-CAD/bext.git "$source_dir"
|
||||
git -C "$source_dir" -c advice.detachedHead=false checkout "$BEXT_SHA"
|
||||
configure_args=(-S "$source_dir" -B "$build_dir" -G Ninja -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON "-DCMAKE_BUILD_TYPE=$BEXT_BUILD_TYPE" "-DCMAKE_INSTALL_PREFIX=$output_dir")
|
||||
if [[ "$RUNNER_OS" == 'Windows' ]]; then
|
||||
configure_args+=(-DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe)
|
||||
elif [[ "$RUNNER_OS" == 'macOS' ]]; then
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
fi
|
||||
cmake "${configure_args[@]}"
|
||||
cmake --build "$build_dir" --config "$BEXT_BUILD_TYPE" --parallel 2
|
||||
|
||||
- name: Validate bext dependency tree
|
||||
shell: bash
|
||||
env:
|
||||
BEXT_OUTPUT_DIR: ${{ inputs.output-dir }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
output_dir="$BEXT_OUTPUT_DIR"
|
||||
if command -v cygpath >/dev/null 2>&1; then
|
||||
output_dir="$(cygpath -u "$output_dir")"
|
||||
fi
|
||||
[[ -d "$output_dir/install" && -d "$output_dir/noinstall" && -f "$output_dir/bext-install-manifest.json" ]]
|
||||
tool="$output_dir/noinstall/bin/strclear"
|
||||
if [[ "$RUNNER_OS" == 'Windows' ]]; then
|
||||
[[ -f "$tool.exe" ]]
|
||||
else
|
||||
[[ -x "$tool" ]]
|
||||
fi
|
||||
|
||||
- name: Save production artifact cache
|
||||
if: steps.download.outputs.ready == 'true'
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: ${{ inputs.output-dir }}
|
||||
key: ${{ steps.resolve.outputs.production-cache-key }}
|
||||
|
||||
- name: Save fallback bext cache
|
||||
if: steps.production-cache.outputs.cache-hit != 'true' && steps.download.outputs.ready != 'true' && steps.fallback-cache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: ${{ inputs.output-dir }}
|
||||
key: ${{ steps.resolve.outputs.fallback-cache-key }}
|
||||
|
||||
- name: Report bext source
|
||||
id: result
|
||||
shell: bash
|
||||
env:
|
||||
ARTIFACT_READY: ${{ steps.resolve.outputs.artifact-ready }}
|
||||
ARTIFACT_SHA: ${{ steps.resolve.outputs.selected-sha }}
|
||||
DOWNLOAD_READY: ${{ steps.download.outputs.ready }}
|
||||
FALLBACK_CACHE_HIT: ${{ steps.fallback-cache.outputs.cache-hit }}
|
||||
PRODUCTION_CACHE_HIT: ${{ steps.production-cache.outputs.cache-hit }}
|
||||
REQUIRED_SHA: ${{ steps.resolve.outputs.required-sha }}
|
||||
run: |
|
||||
if [[ "$PRODUCTION_CACHE_HIT" == 'true' ]]; then
|
||||
source=production-cache
|
||||
elif [[ "$DOWNLOAD_READY" == 'true' ]]; then
|
||||
source=production-artifact
|
||||
elif [[ "$FALLBACK_CACHE_HIT" == 'true' ]]; then
|
||||
source=fallback-cache
|
||||
else
|
||||
source=local-build
|
||||
fi
|
||||
if [[ "$ARTIFACT_READY" == 'true' && ( "$PRODUCTION_CACHE_HIT" == 'true' || "$DOWNLOAD_READY" == 'true' ) ]]; then
|
||||
sha="$ARTIFACT_SHA"
|
||||
else
|
||||
sha="$REQUIRED_SHA"
|
||||
fi
|
||||
echo "source=$source" >> "$GITHUB_OUTPUT"
|
||||
echo "bext-sha=$sha" >> "$GITHUB_OUTPUT"
|
||||
echo "Prepared bext $sha from $source."
|
||||
@@ -1,637 +0,0 @@
|
||||
# BRL-CAD's primary distcheck target runs too long and does too much work to
|
||||
# be suitable as a CI target, even occasionally. To achieve essentially the
|
||||
# same result, we define individual jobs for each distcheck sub-target and
|
||||
# distribute them across five serial queues. To avoid the target list going
|
||||
# stale, this header is followed by jobs generated from the CMake logic.
|
||||
|
||||
name: Distcheck
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '30 3 * * 5'
|
||||
|
||||
jobs:
|
||||
bext:
|
||||
name: Prepare bext
|
||||
runs-on: ubuntu-24.04
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
distcheck-default_build_type:
|
||||
name: distcheck-default_build_type
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [bext]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-default_build_type
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-default_build_type -G Ninja -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-default_build_type --target distcheck-default_build_type
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-default_build_type/distcheck-default_build_type.log
|
||||
|
||||
distcheck-debug:
|
||||
name: distcheck-debug
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [bext]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-debug
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-debug -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-debug --config Debug --target distcheck-debug
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-debug/distcheck-debug.log
|
||||
|
||||
distcheck-release:
|
||||
name: distcheck-release
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [bext]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-release
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-release -G Ninja -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-release --config Release --target distcheck-release
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-release/distcheck-release.log
|
||||
|
||||
distcheck-no_unity_debug:
|
||||
name: distcheck-no_unity_debug
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [bext]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-no_unity_debug
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-no_unity_debug -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_UNITY_BUILD=OFF
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-no_unity_debug --config Debug --target distcheck-no_unity_debug
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-no_unity_debug/distcheck-no_unity_debug.log
|
||||
|
||||
distcheck-no_unity_release:
|
||||
name: distcheck-no_unity_release
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [bext]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-no_unity_release
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-no_unity_release -G Ninja -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_UNITY_BUILD=OFF
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-no_unity_release --config Release --target distcheck-no_unity_release
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-no_unity_release/distcheck-no_unity_release.log
|
||||
|
||||
distcheck-enableall_debug:
|
||||
name: distcheck-enableall_debug
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-default_build_type]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-enableall_debug
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-enableall_debug -G Ninja -DCMAKE_BUILD_TYPE=Debug -DENABLE_ALL=ON -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-enableall_debug --config Debug --target distcheck-enableall_debug
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-enableall_debug/distcheck-enableall_debug.log
|
||||
|
||||
distcheck-enableall_release:
|
||||
name: distcheck-enableall_release
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-debug]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-enableall_release
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-enableall_release -G Ninja -DCMAKE_BUILD_TYPE=Release -DENABLE_ALL=ON -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-enableall_release --config Release --target distcheck-enableall_release
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-enableall_release/distcheck-enableall_release.log
|
||||
|
||||
distcheck-prepared_debug:
|
||||
name: distcheck-prepared_debug
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-release]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-prepared_debug
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-prepared_debug -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-prepared_debug --config Debug --target distcheck-prepared_debug
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-prepared_debug/distcheck-prepared_debug.log
|
||||
|
||||
distcheck-prepared_release:
|
||||
name: distcheck-prepared_release
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-no_unity_debug]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-prepared_release
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-prepared_release -G Ninja -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-prepared_release --config Release --target distcheck-prepared_release
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-prepared_release/distcheck-prepared_release.log
|
||||
|
||||
distcheck-no_tcl:
|
||||
name: distcheck-no_tcl
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-no_unity_release]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-no_tcl
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-no_tcl -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_TCL=OFF
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-no_tcl --config Debug --target distcheck-no_tcl
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-no_tcl/distcheck-no_tcl.log
|
||||
|
||||
distcheck-no_tk:
|
||||
name: distcheck-no_tk
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-enableall_debug]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-no_tk
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-no_tk -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_TK=OFF
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-no_tk --config Debug --target distcheck-no_tk
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-no_tk/distcheck-no_tk.log
|
||||
|
||||
distcheck-no_strict:
|
||||
name: distcheck-no_strict
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-enableall_release]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-no_strict
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-no_strict -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_STRICT=OFF
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-no_strict --config Debug --target distcheck-no_strict
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-no_strict/distcheck-no_strict.log
|
||||
|
||||
distcheck-no_object:
|
||||
name: distcheck-no_object
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-prepared_debug]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-no_object
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-no_object -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DUSE_OBJECT_LIBS=OFF
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-no_object --config Debug --target distcheck-no_object
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-no_object/distcheck-no_object.log
|
||||
|
||||
distcheck-odd_pathnames:
|
||||
name: distcheck-odd_pathnames
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-prepared_release]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-odd_pathnames
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-odd_pathnames -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-odd_pathnames --config Debug --target distcheck-odd_pathnames
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-odd_pathnames/distcheck-odd_pathnames.log
|
||||
|
||||
distcheck-in_src_dir:
|
||||
name: distcheck-in_src_dir
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [distcheck-no_tcl]
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
sudo apt-get install astyle re2c
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev libgl-dev libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
- name: Directory setup
|
||||
run: cmake -E make_directory build_distcheck-in_src_dir
|
||||
- name: Configure
|
||||
run: cmake -S brlcad -B build_distcheck-in_src_dir -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
- name: Build
|
||||
run: cmake --build build_distcheck-in_src_dir --config Debug --target distcheck-in_src_dir
|
||||
- name: Log
|
||||
if: always()
|
||||
run: cat build_distcheck-in_src_dir/distcheck-in_src_dir.log
|
||||
@@ -1,85 +0,0 @@
|
||||
# The purpose of this particular test definition is to support on-demand
|
||||
# interactive command shells. We sometimes see problems that occur only in the
|
||||
# Github Runner environments, and in order to explore what is happening we need
|
||||
# an interactive prompt (the alternative is hours-per-cycle submit and test
|
||||
# loops, which doesn't scale at all.)
|
||||
#
|
||||
# Unlike the other BRL-CAD tests, this one is started manually from the Github
|
||||
# website. For more information see https://mxschmitt.github.io/action-tmate/
|
||||
#
|
||||
# The "recommended" way to use this action is for the dev to make a fork of
|
||||
# the repository, alter the configure and/or build logic below for their
|
||||
# particular use case (the example below is a libged-only build used to zero
|
||||
# in on a specific libged behavior) before running.
|
||||
|
||||
name: BRL-CAD Linux Interactive Debugging
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
debug_enabled:
|
||||
type: boolean
|
||||
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
|
||||
required: false
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
|
||||
linux:
|
||||
name: Ubuntu Latest GCC
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Setup - System
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils liblief-dev
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Cleanup (we want to avoid wasting disk space)
|
||||
sudo apt-get clean
|
||||
|
||||
- name: Setup - System Qt Build Requirements
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
sudo apt-get clean
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Build Directory setup
|
||||
run: |
|
||||
cmake -E make_directory ./build_linux
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake -S . -G Ninja -B build_linux -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_COMPONENTS=libged -DBRLCAD_EXTRADOCS=OFF
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake --build build_linux --config Release --target check
|
||||
|
||||
- name: Debugging - tmate session
|
||||
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
|
||||
uses: mxschmitt/action-tmate@v3
|
||||
with:
|
||||
limit-access-to-actor: true
|
||||
|
||||
@@ -1,449 +0,0 @@
|
||||
# This file defines Continuous Integration (CI) tests for BRL-CAD using the
|
||||
# Github Actions framework that are executed each time a commit is pushed.
|
||||
# Currently it defines configurations for Windows, Linux and OSX.
|
||||
#
|
||||
# For more information about available platforms for testing, see:
|
||||
#
|
||||
# https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners
|
||||
#
|
||||
# The general rule when building in CI is to go more verbose in output settings
|
||||
# rather than less, since iterative debugging isn't practical. We also want to
|
||||
# avoid parallel building - while that will sometimes catch dependency issues,
|
||||
# it also makes the outputs far harder to interpret when there is a problem.
|
||||
# Better to do parallel build debugging in an environment were more interactive
|
||||
# and iterative debugging is available while preserving the readability of the
|
||||
# CI outputs for other issues.
|
||||
|
||||
name: Per-push
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
|
||||
linux:
|
||||
name: Ubuntu GCC
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: true
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: github.event_name == 'push'
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
# Install system dependencies
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Directory setup
|
||||
run: |
|
||||
cmake -E make_directory ./build_linux
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake -S brlcad -B build_linux -G Ninja -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
id: build_parallel
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake --build build_linux --config Release --target check -j2
|
||||
cmake --build build_linux --config Release --target package -j2
|
||||
continue-on-error: true
|
||||
|
||||
- name: Build (serial for diagnostics)
|
||||
if: steps.build_parallel.outcome == 'failure'
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake --build build_linux --config Release --target check
|
||||
cmake --build build_linux --config Release --target package
|
||||
|
||||
# A full distcheck is too expensive for the runners, but we can run the
|
||||
# repository integrity check and make sure we can build source archives.
|
||||
archives:
|
||||
name: Source Archives
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [linux]
|
||||
strategy:
|
||||
fail-fast: true
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: github.event_name == 'push'
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
# Install system dependencies - we do the full setup here, even though
|
||||
# source archives isn't intended to build the main BRL-CAD, in case
|
||||
# this check is the one where the bext dependency cache check gets a miss.
|
||||
# In that case, this check will have to build bext to proceed - and it will
|
||||
# need the bext environment set up to do so.
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake -E make_directory build_archives
|
||||
cmake -S brlcad -B build_archives -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output
|
||||
cmake --build build_archives --config Release --target distcheck-source_archives
|
||||
|
||||
# A full bext build every time we push is too much, but we can exercise the
|
||||
# basic bext mechanisms and also the BRLCAD_COMPONENTS subbuild at the same
|
||||
# time if we do a local bext build of *just* the libbg subset of BRL-CAD. If
|
||||
# the COMPONENTS mechanism works as it should it won't trigger a full bext
|
||||
# build, and we'll only be compiling what libbg needs.
|
||||
componentbext:
|
||||
name: BRLCAD_COMPONENTS
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: github.event_name == 'push'
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
# Install system dependencies - we do the full setup here, even though
|
||||
# source archives isn't intended to build the main BRL-CAD, in case
|
||||
# this check is the one where the bext dependency cache check gets a miss.
|
||||
# In that case, this check will have to build bext to proceed - and it will
|
||||
# need the bext environment set up to do so.
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Directory setup
|
||||
run: |
|
||||
cmake -E make_directory build_components
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake -S brlcad -B build_components -DCMAKE_BUILD_TYPE=Release -DBRLCAD_COMPONENTS=libbg
|
||||
cmake --build build_components --config Release
|
||||
|
||||
windows:
|
||||
name: MSVC - Ninja
|
||||
runs-on: windows-2025
|
||||
strategy:
|
||||
fail-fast: true
|
||||
if: github.event_name == 'push'
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v3
|
||||
|
||||
- name: Add cl.exe to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Add github workspace to path
|
||||
shell: pwsh
|
||||
run: Add-Content -Path $env:GITHUB_PATH -Value $env:GITHUB_WORKSPACE
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: windows-2025-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Build Directory setup
|
||||
run: cmake -E make_directory ./build_winninja
|
||||
|
||||
- name: Configure
|
||||
shell: powershell
|
||||
run: |
|
||||
cmake -S brlcad -B build_winninja -G Ninja -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DBRLCAD_EXT_DIR=${{ runner.temp }}\bext_output -DCMAKE_BUILD_TYPE=Release -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
id: build_parallel
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
continue-on-error: true
|
||||
|
||||
- name: Build (serial for diagnostics)
|
||||
if: steps.build_parallel.outcome == 'failure'
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja -j1 -v
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
|
||||
- name: Check
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja check -v
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
|
||||
- name: Package
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja package
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
|
||||
windows_std_tools:
|
||||
name: MSVC - Standard Tools
|
||||
needs: [windows]
|
||||
runs-on: windows-2025
|
||||
strategy:
|
||||
fail-fast: true
|
||||
if: github.event_name == 'push'
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v3
|
||||
|
||||
- name: Add cl.exe to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: windows-2025-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Build Directory setup
|
||||
run: |
|
||||
cmake -E make_directory ./build_winstd
|
||||
|
||||
- name: MSVC and Ninja diagnostics
|
||||
shell: cmd
|
||||
run: |
|
||||
where cmake
|
||||
where ninja
|
||||
where cl.exe
|
||||
where msbuild
|
||||
cmake --version
|
||||
cl.exe
|
||||
set INCLUDE
|
||||
set LIB
|
||||
set LIBPATH
|
||||
|
||||
- name: Configure
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake -S brlcad -B build_winstd -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_BUNDLED_LIBS=Bundled -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=%RUNNER_TEMP%\bext_output -DBRLCAD_ENABLE_QT=ON -DBRLCAD_CONFIG_PROBE_DIAGNOSTICS=ON -DBRLCAD_PROBE_SNAPSHOT_FILE=%GITHUB_WORKSPACE%\build_winstd\parallel-probes.txt
|
||||
|
||||
- name: Configure probe diagnostics
|
||||
if: always()
|
||||
shell: pwsh
|
||||
run: |
|
||||
$build = Join-Path $env:GITHUB_WORKSPACE 'build_winstd'
|
||||
$diagnosticDir = Join-Path $build 'CMakeTmp/probe_diagnostics'
|
||||
if (Test-Path $diagnosticDir) {
|
||||
Get-ChildItem -Path $diagnosticDir -File | Sort-Object Name | ForEach-Object {
|
||||
Write-Host "`n===== $($_.FullName) ====="
|
||||
Get-Content -Path $_.FullName
|
||||
}
|
||||
} else {
|
||||
Write-Host "No parallel-probe diagnostic directory was created."
|
||||
}
|
||||
$cmakeError = Join-Path $build 'CMakeFiles/CMakeError.log'
|
||||
if (Test-Path $cmakeError) {
|
||||
Write-Host "`n===== $cmakeError ====="
|
||||
Get-Content -Path $cmakeError
|
||||
}
|
||||
$cache = Join-Path $build 'CMakeCache.txt'
|
||||
if (Test-Path $cache) {
|
||||
Write-Host "`n===== selected cache entries ====="
|
||||
Select-String -Path $cache -Pattern '^(HAVE_CONIO_H|BRLCAD_PROBE_USE_NINJA|BRLCAD_PROBE_NINJA_EXE|BRLCAD_PROBE_VCVARS|BRLCAD_PROBE_VCVARS_ARCH):' | ForEach-Object { $_.Line }
|
||||
}
|
||||
|
||||
- name: Rebuild conio probe verbosely
|
||||
if: always()
|
||||
shell: cmd
|
||||
continue-on-error: true
|
||||
run: |
|
||||
if not exist build_winstd\CMakeTmp\INCLUDE_PROBE_build (
|
||||
echo INCLUDE_PROBE mini-project was not configured.
|
||||
exit /b 0
|
||||
)
|
||||
cmake --build build_winstd\CMakeTmp\INCLUDE_PROBE_build --config Release --target HAVE_CONIO_H --verbose
|
||||
|
||||
- name: Build
|
||||
id: build_parallel
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release -j2
|
||||
continue-on-error: true
|
||||
|
||||
- name: Build (serial for diagnostics)
|
||||
if: steps.build_parallel.outcome == 'failure'
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release --target mged
|
||||
|
||||
- name: Check
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release --target check -j2
|
||||
|
||||
- name: Package
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release --target package -j2
|
||||
|
||||
osx:
|
||||
name: macOS Clang
|
||||
needs: [linux]
|
||||
runs-on: macos-14
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Install Xquartz
|
||||
run: |
|
||||
brew install xquartz --cask
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: macos-14-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Build Directory setup
|
||||
run: |
|
||||
cmake -E make_directory build_osx
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
cmake -S brlcad -B build_osx -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
id: build_parallel
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
make -j2
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
continue-on-error: true
|
||||
|
||||
- name: Build (serial for diagnostics)
|
||||
if: steps.build_parallel.outcome == 'failure'
|
||||
run: |
|
||||
make
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
|
||||
- name: Check
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
make check
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
make package
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
@@ -1,400 +0,0 @@
|
||||
# This file defines Continuous Integration (CI) tests for BRL-CAD using the
|
||||
# Github Actions framework. Currently it defines configurations for Windows,
|
||||
# Linux and OSX. These tests are run on a fixed schedule, rather than per
|
||||
# push, and will typically take longer to run.
|
||||
#
|
||||
# Tests here are intended to test more expensive integrations and longer
|
||||
# builds than the ones targeted at per-commit feedback. The tradeoff is
|
||||
# that a failure in these tests might be cause by any commit within a
|
||||
# 24 hour block of time, so the developer will need to track down the
|
||||
# specifics themselves.
|
||||
|
||||
name: Scheduled
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 3 * * *' # daily at 03:00 UTC
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
linux_bext:
|
||||
name: Linux - BRL-CAD bext build
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
# Install system dependencies
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Directory setup
|
||||
run: |
|
||||
cmake -E make_directory build_linux
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake -S brlcad -B build_linux -G Ninja -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_BEXT_CLEANUP=ON -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build + Check + Package
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake --build build_linux --config Release --target check
|
||||
cmake --build build_linux --config Release --target package
|
||||
|
||||
windows_bext:
|
||||
name: MSVC - Ninja - BRL-CAD bext build
|
||||
needs: [linux_bext]
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
if: ${{ !cancelled() }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v3
|
||||
|
||||
- name: Add cl.exe to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Add github workspace to path
|
||||
shell: powershell
|
||||
run: Add-Content -Path $env:GITHUB_PATH -Value $env:GITHUB_WORKSPACE
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Build Directory setup
|
||||
run: cmake -E make_directory ./build_winninja
|
||||
|
||||
- name: Configure
|
||||
shell: powershell
|
||||
run: |
|
||||
cmake -S brlcad -B build_winninja -G Ninja -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_BEXT_CLEANUP=ON -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja -j1 -v
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
|
||||
- name: Check
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja check -v
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
|
||||
- name: Package
|
||||
shell: powershell
|
||||
run: |
|
||||
ninja package
|
||||
working-directory: ${{ github.workspace }}/build_winninja
|
||||
|
||||
windows_std_tools_bext:
|
||||
name: MSVC - Standard Tools - BRL-CAD bext build
|
||||
needs: [windows_bext]
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
if: ${{ !cancelled() }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v3
|
||||
|
||||
- name: Add cl.exe to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Add github workspace to path
|
||||
shell: cmd
|
||||
run: echo %GITHUB_WORKSPACE%>>"%GITHUB_PATH%"
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Build Directory setup
|
||||
run: |
|
||||
cmake -E make_directory ./build_winstd
|
||||
|
||||
- name: Configure
|
||||
shell: cmd
|
||||
run: |
|
||||
where cmake
|
||||
where ninja
|
||||
where cl.exe
|
||||
where msbuild
|
||||
cmake -S brlcad -B build_winstd -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_BUNDLED_LIBS=Bundled -DCMAKE_BUILD_TYPE=Release -DBRLCAD_BEXT_CLEANUP=ON -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release --target mged
|
||||
|
||||
- name: Check
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release --target check
|
||||
|
||||
- name: Package
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake --build build_winstd --config Release --target package
|
||||
|
||||
osx_bext:
|
||||
name: macOS - BRL-CAD bext build
|
||||
needs: [linux_bext]
|
||||
runs-on: macos-14
|
||||
strategy:
|
||||
fail-fast: true
|
||||
if: ${{ !cancelled() }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Install Xquartz
|
||||
run: |
|
||||
brew install xquartz --cask
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Build Directory setup
|
||||
run: |
|
||||
cmake -E make_directory build_osx
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
cmake -S brlcad -B build_osx -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_BEXT_CLEANUP=ON -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
make
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
|
||||
- name: Check
|
||||
run: |
|
||||
make check
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
make package
|
||||
working-directory: ${{ github.workspace }}/build_osx
|
||||
|
||||
linux_static:
|
||||
name: Clang Static Analyser
|
||||
needs: [linux_bext]
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: true
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
# Setup hint from https://github.com/darktable-org/rawspeed/blob/develop/.github/workflows/ci-static-analysis.yml
|
||||
- name: Clang Static Analyzer Setup
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install clang-18 clang-tools-18
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev # Cleanup
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Directory setup
|
||||
run: |
|
||||
cmake -E make_directory build_clangstatic
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
working-directory: ${{ github.workspace }}/brlcad
|
||||
|
||||
- name: Run Analyzer
|
||||
env:
|
||||
BRLCAD_EXT_DIR: ${{ runner.temp }}/bext_output
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:/usr/share/clang/scan-build-18/bin:/usr/share/clang/scan-build-18/libexec:$PATH
|
||||
cp $GITHUB_WORKSPACE/brlcad/misc/clang-static-analyzer-run.sh .
|
||||
./clang-static-analyzer-run.sh
|
||||
working-directory: ${{ github.workspace }}/brlcad/build_clangstatic
|
||||
|
||||
- name: Summary
|
||||
if: success() || failure()
|
||||
run: |
|
||||
sudo apt-get install html2text
|
||||
html2text scan-reports-all/*/index.html
|
||||
working-directory: ${{ github.workspace }}/brlcad/build_clangstatic
|
||||
|
||||
|
||||
# See https://app.codecov.io/gh/BRL-CAD/brlcad for analysis results
|
||||
linux_cov:
|
||||
name: LCOV Coverage testing
|
||||
needs: [linux_bext]
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: true
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Setup - System
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Get the lcov tool and its dependencies
|
||||
sudo apt-get install lcov gdb
|
||||
# Install X/OpenGL dev pkgs
|
||||
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev
|
||||
# Install tools
|
||||
sudo apt-get install astyle re2c xsltproc libxml2-utils
|
||||
# Install dependency dev pkgs
|
||||
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xinput-dev libxcb-xrm-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: brlcad
|
||||
|
||||
- name: Prepare bext dependencies
|
||||
uses: ./brlcad/.github/actions/prepare-bext
|
||||
with:
|
||||
platform-channel: ubuntu-24.04-${{ runner.arch }}-release
|
||||
source-dir: ${{ github.workspace }}/brlcad
|
||||
output-dir: ${{ runner.temp }}/bext_output
|
||||
build-type: Release
|
||||
artifact-token: ${{ secrets.BEXT_ARTIFACT_TOKEN }}
|
||||
|
||||
- name: Directory setup
|
||||
run: |
|
||||
cmake -E make_directory build_lcov
|
||||
cmake -E make_directory $HOME/.cache
|
||||
cmake -E make_directory $HOME/.cache/BRL-CAD
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake -S brlcad -B build_lcov -DBRLCAD_ENABLE_COVERAGE=ON -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_EXT_DIR=${{ runner.temp }}/bext_output -DBRLCAD_ENABLE_QT=ON
|
||||
|
||||
- name: Build
|
||||
id: build_parallel
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake --build build_lcov -j2
|
||||
continue-on-error: true
|
||||
|
||||
- name: Build (serial for diagnostics)
|
||||
if: steps.build_parallel.outcome == 'failure'
|
||||
run: |
|
||||
export PATH=$GITHUB_WORKSPACE:$PATH
|
||||
cmake --build build_lcov -j1
|
||||
|
||||
- name: Run Tests
|
||||
id: coverage_tests
|
||||
run: |
|
||||
find . -name '*.gcda' -exec rm {} \;
|
||||
cmake --build . --target check
|
||||
working-directory: ${{ github.workspace }}/build_lcov
|
||||
|
||||
- name: Diagnose failed annotation test
|
||||
if: failure() && steps.coverage_tests.outcome == 'failure'
|
||||
continue-on-error: true
|
||||
run: |
|
||||
set +e
|
||||
ctest -R '^rt_datum_annot_semantics$' -VV
|
||||
cat Testing/Temporary/LastTest.log
|
||||
if command -v gdb >/dev/null 2>&1; then
|
||||
gdb --quiet --batch \
|
||||
-ex 'set pagination off' \
|
||||
-ex run \
|
||||
-ex 'thread apply all bt full' \
|
||||
--args ./src/librt/tests/rt_datum_annot_semantics
|
||||
fi
|
||||
working-directory: ${{ github.workspace }}/build_lcov
|
||||
|
||||
- name: Capture Coverage
|
||||
run: |
|
||||
lcov --capture --directory . --output-file coverage.info
|
||||
lcov -r coverage.info \*\/bext_output\/\* > coverage-2.info
|
||||
lcov -r coverage-2.info \/usr\/\* > coverage_cad.info
|
||||
rm coverage-*.info
|
||||
mv coverage_cad.info ..
|
||||
working-directory: ${{ github.workspace }}/build_lcov
|
||||
|
||||
- name: Upload
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
files: ./coverage_cad.info
|
||||
|
||||
-41
@@ -1,41 +0,0 @@
|
||||
# Common build directories used in the source tree
|
||||
/build*
|
||||
/.build*
|
||||
/*_build*
|
||||
/*-build*
|
||||
/out
|
||||
|
||||
# Temporary files
|
||||
*~
|
||||
\#*\#
|
||||
.\#*
|
||||
[._]*.s[a-v][a-z]
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-v][a-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# OS specific files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
|
||||
# CMake supports some configuration files to allow users a convenient way to pre-define
|
||||
# sets of configuration options:
|
||||
# https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
|
||||
/CMakeUserPresets.json
|
||||
|
||||
# Visual Studio (note that CMakePresets.json is recommended instead of
|
||||
# CMakeSettings.json for Visual Studio going forward)
|
||||
# https://learn.microsoft.com/en-us/cpp/build/cmake-presets-vs
|
||||
# https://learn.microsoft.com/en-us/cpp/build/customize-cmake-settings
|
||||
/.vs
|
||||
.vscode
|
||||
/CMakeSettings.json
|
||||
|
||||
#Qt Creator
|
||||
CMakeLists.txt.user
|
||||
|
||||
# Misc
|
||||
.clang-format
|
||||
*__pycache__*
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
# Code Quality Standards
|
||||
|
||||
Write code as a senior engineer would for long-term maintenance. These are non-negotiable defaults, not suggestions to apply when asked.
|
||||
|
||||
## Principles
|
||||
|
||||
- **DRY.** Extract duplicate logic. Refactor. Once and only once.
|
||||
- **Minimize surprises.** Preserve existing style and conventions. Test when you can.
|
||||
- **No magic values.** Use named constants, enums, or configuration. Every literal needs justification.
|
||||
- **Minimize scope.** Prefer tightest scope that works - local variables, parameters, encapsulation. Broader scope needs justification.
|
||||
- **No dead code.** Delete commented-out code, unused variables, unreachable branches. Version control remembers.
|
||||
- **Comments explain why.** Document intent, constraints, and non-obvious decisions. Use "what" summaries only for complex or non-obvious algorithms. If routine code needs a comment to explain it, the code should be clearer.
|
||||
- **Clean up what you touch.** Improve code you are changing: rename unclear variables, extract functions, simplify conditionals. Do not mix unrelated cleanup with logic changes - separate concerns, separate commits.
|
||||
- **Handle errors deliberately.** Whether failing loudly or quietly, make it an intentional choice. No accidental swallowing.
|
||||
- **YAGNI.** Do not add speculative abstractions, unused parameters, or unplanned extension points. Build what is needed now. Refactor when requirements actually change.
|
||||
- **Perfection is when there is nothing left to take away.** Prefer reduction over addition, simpler is better. Too clever to debug easily is too clever.
|
||||
|
||||
## Before Finishing
|
||||
|
||||
Review your changes for code smells, duplicated logic, hardcoded values, overly broad scope, unclear names, missing error handling, unnecessary complexity, etc. Fix issues in the same pass - do not defer cleanup.
|
||||
|
||||
## Git
|
||||
|
||||
Never commit without permission (ask every time). Never push to remote. Never use `codex`, `chatgpt`, `openai`, `gemini`, `antigravity`, `copilot`, `claude`, `llm`, `ai`, or similar terms in branch names, tag names, commits, PRs, comments, and other metadata. Do not add generated-by notices or otherwise indicate authorship unless user explicitly requests. Do not include specific machine information - full file system paths, machine names, IP addresses, or other identifiable information in commit messages, code, comments or documentation.
|
||||
|
||||
## Repository Coding Conventions
|
||||
|
||||
The HACKING file in the root of the source tree defines coding conventions specific to BRL-CAD, including versions of common functions that are used in our code base instead of raw standard functions. Review this file before writing code so your changes and additions adhere to BRL-CAD standards.
|
||||
|
||||
BRL-CAD code should typically use our ZERO and EQUAL macros rather than raw floating-point equality comparisons to avoid Werror=float-equal compilation failures on expressions such as a == 0.0 (should be ZERO(a)) or b != c (should be !EQUAL(b, c)).
|
||||
|
||||
When completing a code change (not for intermediate iterations, but when preparing to hand back a finalized change) use our regress-repository and regress-licenses build targets to check that the result satisfies our internal checkers.
|
||||
@@ -111,7 +111,7 @@ Hanes, Jeff
|
||||
U.S. Army Ballistic Research Laboratory
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Johnson, Christopher T.
|
||||
Johnson, Christopher T. <cjohnson@cyberpaladin.com>
|
||||
nicknames cjohnson
|
||||
1989 February
|
||||
Cray Research, Inc.
|
||||
@@ -119,7 +119,7 @@ Geometric Solutions, Inc.
|
||||
Paladin Software
|
||||
JRMTech, Inc.
|
||||
|
||||
Butler, Lee A.
|
||||
Butler, Lee A. <butler@arl.army.mil>
|
||||
nicknames butler, lbutler
|
||||
1989 July
|
||||
U.S. Army Ballistic Research Laboratory
|
||||
@@ -131,7 +131,7 @@ nicknames pjt
|
||||
U.S. Army Ballistic Research Laboratory
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Markowski, Michael J.
|
||||
Markowski, Michael J. <michael.markowski@arl.army.mil>
|
||||
nicknames mmark, mm
|
||||
1991 June
|
||||
U.S. Army Ballistic Research Laboratory
|
||||
@@ -141,7 +141,7 @@ nicknames gdurf
|
||||
1992 August
|
||||
ARL Student Hire / Carnegie Mellon University
|
||||
|
||||
Anderson, John R.
|
||||
Anderson, John R. <jra@arl.army.mil>
|
||||
nicknames jra, johnranderson
|
||||
1993 May
|
||||
U.S. Army Ballistic Research Laboratory
|
||||
@@ -154,14 +154,14 @@ nicknames adam
|
||||
1995 October
|
||||
Geometric Solutions, Inc.
|
||||
|
||||
Parker, Robert G.
|
||||
Parker, Robert G. **
|
||||
nicknames include bparker, bob1961
|
||||
1995 January
|
||||
U.S. Army Research Laboratory
|
||||
SURVICE Engineering, Inc.
|
||||
Open Source
|
||||
|
||||
Morrison, Christopher Sean <morrison@brlcad.org>
|
||||
Morrison, Christopher Sean <morrison@brlcad.org> **
|
||||
nicknames sean, morrison, brlcad
|
||||
1998 December
|
||||
ARL Student Hire / Johns Hopkins University
|
||||
@@ -178,7 +178,7 @@ nicknames tranese
|
||||
2001 March
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Hartley, Robert F.
|
||||
Hartley, Robert F. <hartley@vt.edu>
|
||||
nicknames hartley
|
||||
2002 August
|
||||
ARL Student Hire / Virginia Tech
|
||||
@@ -189,48 +189,48 @@ nicknames twingy, justin
|
||||
Quantum Research International, Inc.
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Greenwald, Erik
|
||||
Greenwald, Erik <erikg@arl.army.mil> **
|
||||
nicknames erikg, erikgreenwald
|
||||
2003 November
|
||||
U.S. Army Research Laboratory
|
||||
Open Source
|
||||
|
||||
Roßberg, Daniel
|
||||
Roßberg, Daniel **
|
||||
nicknames d_rossberg
|
||||
2005 June
|
||||
Industrieanlagen-Betriebsgesellschaft mbH (IABG)
|
||||
Open Source
|
||||
|
||||
Yapp, Cliff
|
||||
Yapp, Cliff **
|
||||
nicknames starseeker
|
||||
2007 September
|
||||
Open Source
|
||||
Quantum Research International, Inc.
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Bowman, W. Keith
|
||||
Bowman, W. Keith **
|
||||
nicknames indianlarry
|
||||
SURVICE Engineering, Inc.
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Weiss, Richard
|
||||
Weiss, Richard **
|
||||
nicknames r_weiss
|
||||
2008 December
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Browder, Thomas M. Jr.
|
||||
Browder, Thomas M. Jr. **
|
||||
nicknames tbrowder2
|
||||
2008 June
|
||||
ManTech International Corporation
|
||||
Open Source
|
||||
|
||||
Reed, Nicholas
|
||||
Reed, Nicholas **
|
||||
nicknames n_reed
|
||||
2008 July
|
||||
ARL Student Hire / University of Maryland, Baltimore County
|
||||
Quantum Research International, Inc.
|
||||
|
||||
Moore, Jr., Carl G.
|
||||
Moore, Jr., Carl G. **
|
||||
nicknames cmoore, carlmoore
|
||||
2011 October
|
||||
U.S. Army Research Laboratory
|
||||
@@ -243,7 +243,7 @@ Weaver, Earl P.
|
||||
1980
|
||||
U.S. Army Ballistic Research Laboratory
|
||||
|
||||
Davisson, Edwin O.
|
||||
Davisson, Edwin O. **
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Rogers, David
|
||||
@@ -260,10 +260,10 @@ U.S. Army Ballistic Research Laboratory
|
||||
Applin, Keith A.
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Kregel, Dwayne
|
||||
Kregel, Dwayne **
|
||||
SURVICE Engineering, Inc.
|
||||
|
||||
Weaver, Stephanie 'Rain'
|
||||
Weaver, Stephanie 'Rain' **
|
||||
2009 June
|
||||
ARL Student Hire / Bridgewater College
|
||||
|
||||
@@ -366,10 +366,6 @@ McDonald, Rob
|
||||
2013 November
|
||||
Open Source
|
||||
|
||||
Roberts, Mitchell
|
||||
2014 July
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Tannous, Marc
|
||||
2014 December
|
||||
Open Source (GCI)
|
||||
@@ -393,11 +389,6 @@ Sieu, Jeff
|
||||
2017 December
|
||||
Open Source (GCI)
|
||||
|
||||
Baker, Josh
|
||||
nicknames joshbaker22
|
||||
2023 August
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
|
||||
CODE CONTRIBUTIONS
|
||||
------------------
|
||||
@@ -608,11 +599,6 @@ nicknames Alexandrus
|
||||
2010 July
|
||||
Open Source
|
||||
|
||||
Pal, Csanyi
|
||||
nicknames csanyi_pal
|
||||
2010 July
|
||||
Open Source
|
||||
|
||||
Hinesley, Brandon
|
||||
nicknames bhinesley
|
||||
2011 March
|
||||
@@ -908,197 +894,10 @@ nicknames chetanshinde911
|
||||
Open Source (GSoC)
|
||||
|
||||
Haydar, Ali
|
||||
nicknames lois221 lgoogl696 LouisGoogl
|
||||
nicknames lois221
|
||||
2019 May
|
||||
Open Source (GSoC)
|
||||
|
||||
Nayak, Himanshu
|
||||
nicknames himanshu40
|
||||
2020 January
|
||||
Open Source (GSoC)
|
||||
|
||||
Suthar, Rishabh
|
||||
nicknames yamhai, rishabhsuthar32
|
||||
2020 March
|
||||
Open Source (GSoC)
|
||||
|
||||
Vaidya, Sahil
|
||||
nicknames sahilvaidya99
|
||||
2020 April
|
||||
ARL Student Hire / University of Texas at Austin
|
||||
|
||||
Das, Sumagna
|
||||
nicknames sumagnadas
|
||||
2020 May
|
||||
Open Source
|
||||
|
||||
Atreya, Vikram
|
||||
nicknames vikram-atreya
|
||||
2020 October
|
||||
Open Source
|
||||
|
||||
Dinges, Trey
|
||||
nicknames treydinges
|
||||
2021 October
|
||||
Texas A&M University
|
||||
|
||||
Connelly, Cole D.
|
||||
nicknames cdconn00
|
||||
2021 October
|
||||
Texas A&M University
|
||||
|
||||
Olivarez, Vincent
|
||||
nicknames volivarez60
|
||||
2021 October
|
||||
Texas A&M University
|
||||
|
||||
McGregor, Christopher J.
|
||||
nicknames f4alt
|
||||
2021 October
|
||||
Texas A&M University
|
||||
|
||||
Studwell, Alex P.
|
||||
nicknames apstudwell
|
||||
2021 October
|
||||
Texas A&M University
|
||||
|
||||
Wilson, Reid
|
||||
nicknames rwilson
|
||||
2021 October
|
||||
Texas A&M University
|
||||
|
||||
Paz, Luz
|
||||
nicknames luzpaz
|
||||
2022 February
|
||||
Open Source
|
||||
|
||||
Ferguson, Sean
|
||||
nicknames GradualSyrup
|
||||
2022 March
|
||||
Texas A&M University
|
||||
|
||||
Chambers, William R.
|
||||
nicknames redcarrera
|
||||
2022 April
|
||||
U.S. Army DEVCOM Analysis Center
|
||||
|
||||
Kejriwal, Tanya
|
||||
nicknames tanyakejriwal
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Servin, Diego
|
||||
nicknames dservin
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Norris, Cameron
|
||||
nicknames cameron-norris
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Hernandez, Luis
|
||||
nicknames LouisTheLeaf
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Curtis, Alexandria
|
||||
nicknames acurtis55
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Plaisance, Andrew T.
|
||||
nicknames atp318
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Stepic, Joseph
|
||||
nicknames JosephStepic
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Santos, Kevin
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Bergeron, Wesley Paul
|
||||
2022 February
|
||||
Texas A&M University
|
||||
|
||||
Chen, Zhuo (Danny)
|
||||
2023 February
|
||||
Texas A&M University
|
||||
|
||||
Hoskinson, Allyson
|
||||
2023 February
|
||||
Texas A&M University
|
||||
|
||||
Plant, Andrew
|
||||
2023 February
|
||||
Texas A&M University
|
||||
|
||||
Sturtevant, Mark
|
||||
2023 February
|
||||
Texas A&M University
|
||||
|
||||
Tao, Michael
|
||||
2023 February
|
||||
Texas A&M University
|
||||
|
||||
Dhawan, Rohan
|
||||
2023 October
|
||||
Texas A&M University
|
||||
|
||||
Feng, Feng
|
||||
2023 October
|
||||
Texas A&M University
|
||||
|
||||
Hollenbeck, Sam
|
||||
nicknames samhollenbeck
|
||||
2023 October
|
||||
Texas A&M University
|
||||
|
||||
Pham, Timothy
|
||||
nicknames YUMGUY
|
||||
2023 October
|
||||
Texas A&M University
|
||||
|
||||
Zou, Yida
|
||||
nicknames YidaZou
|
||||
2023 October
|
||||
Texas A&M University
|
||||
|
||||
Reynolds, Timothy
|
||||
nicknames TheZouave007
|
||||
2024 February
|
||||
Texas A&M University
|
||||
|
||||
Delbarre, Gaultier
|
||||
nicknames CoralRocker
|
||||
2024 March
|
||||
Texas A&M University
|
||||
|
||||
Beckett, Ian
|
||||
2024 March
|
||||
Texas A&M University
|
||||
|
||||
McLean, Connor
|
||||
2024 March
|
||||
Texas A&M University
|
||||
|
||||
Reel, Samuel (Sammy)
|
||||
2024 March
|
||||
Texas A&M University
|
||||
|
||||
Rupesh
|
||||
nicknames rupes, rupeshca007
|
||||
2026 March
|
||||
Open Source
|
||||
|
||||
nicknames laithaldaeef
|
||||
2026 March
|
||||
Open Source
|
||||
|
||||
|
||||
SPECIAL THANKS
|
||||
--------------
|
||||
@@ -1413,18 +1212,6 @@ Liu, Jeffrey
|
||||
2019 December
|
||||
Open Source (GCI)
|
||||
|
||||
Wade, Pauline
|
||||
2021 August
|
||||
Texas A&M University
|
||||
|
||||
nicknames r-ricci
|
||||
2022 January
|
||||
Open Source
|
||||
|
||||
nicknames Meghna45-code
|
||||
2026 July
|
||||
Open Source
|
||||
|
||||
|
||||
CORPORATE AND ORGANIZATION SUPPORT
|
||||
----------------------------------
|
||||
@@ -1496,6 +1283,10 @@ contributed entirely before the name change reflect the original name,
|
||||
whereas persons who continued or began contributions after the name
|
||||
change reflect the new name.
|
||||
|
||||
If corrections or additions need to be made, please contact one of the
|
||||
developers. Additionally, you may send inquiries, suggestions, and
|
||||
comments to the developer list: brlcad-devel@lists.sourceforge.net
|
||||
** The individual is an active contributor, participating in BRL-CAD
|
||||
development within the past 12 months with numerous contributions.
|
||||
|
||||
If any corrections or additions need to be made, please contact one of
|
||||
the active core developers. Additionally, you may send inquiries,
|
||||
suggestions, and comments to the developer mailing list:
|
||||
brlcad-devel@lists.sourceforge.net
|
||||
|
||||
@@ -15,103 +15,20 @@ on-going issues.
|
||||
Recent Bugs
|
||||
-----------
|
||||
|
||||
* fbserv as well as -F option handling (e.g., -F0 or -F/dev/wgls) that
|
||||
is supported across myriad other tools appears to be broken on
|
||||
Windows in a git bash shell (problem is not seen in Command Prompt.)
|
||||
Something is concatenating EXEPATH and/or fbserv silently fails with
|
||||
return codes (e.g., when not specifying -F, only giving the port.)
|
||||
|
||||
* recursive bu_parallel() failure, tbd whether cpp11 or pthread impl,
|
||||
likely because IDs are exceeding MAX_PSW, causing mayhem and chaos.
|
||||
|
||||
* rtcheck_handler_cleanup() throws 'invalid handle specified' on Windows
|
||||
in closing of STDOUT (see FIXME comment). Does not affect normal running,
|
||||
but a debug build complains.
|
||||
|
||||
* very peculiar non-linear memory issue in rt when allocating a large
|
||||
flat hierarchy of objects. I have three combs, each with 10k
|
||||
members unioned. Each member is an rcc. Rendering with just one
|
||||
comb results in about 2GB usage. Two combs result in about 3.5GB
|
||||
usage. Three combs results in 18GB usage. Four is killed after
|
||||
24GB. Suspect there is some 32-bit issue once we exceed 4GB that is
|
||||
causing subsequent allocations to be bigger than necessary. Looking
|
||||
at allocation stack, rt_ct_get() appears to be allocating 10MB
|
||||
chunks.
|
||||
|
||||
[HARD] Superlinear growth (3 combs -> 18GB) points at an
|
||||
integer/overflow interaction deep in the space-partitioning cut
|
||||
allocator (rt_ct_get 10MB chunks), intertwined with bu memory.
|
||||
Painful to isolate and validate at scale.
|
||||
[FAN-OUT: poor -- one focused investigator with an allocator/profiler
|
||||
trace; not parallelizable.]
|
||||
|
||||
* rt from mged is not outputting overlap log messages or rt summary.
|
||||
Stops printing after opendb line. (Observed on Mac)
|
||||
|
||||
* mged running an rt with excessive overlaps ends up in a deadlock.
|
||||
Backtrace indicates write buffer is full, likely because no output
|
||||
is going to terminal. (Observed on Mac)
|
||||
|
||||
* Running"mged -c test.g" exits automatically on default prompt:
|
||||
...
|
||||
Create new database (y|n)[n]?
|
||||
Warning: no database is currently open!
|
||||
morrison@Miniagua .build %
|
||||
|
||||
* MGED crashes trying to open the repository file
|
||||
doc/docbook/resources/other/standard/xsl/images/important.tif
|
||||
It is mis-identified as a v4 .g file due to the file header's
|
||||
first character matching the v4 .g first character.
|
||||
|
||||
* MGED on Mac hides the main command window on File->Open when you
|
||||
cancel the open. Presumably the withdraw is somehow getting routed
|
||||
to the window and not just the open dialog.
|
||||
|
||||
* running pkgIndex and/or mkIndex during build appears to be randomly
|
||||
crashing on Mac using bundled libs
|
||||
|
||||
* Visual error when drawing using -S -m1 of a region with the same solid
|
||||
subtracted and then unioned.
|
||||
|
||||
make two boxes stacked on top of one another
|
||||
> r boxes.r u box - box1 u box1
|
||||
> e -S -m1 boxes.r
|
||||
box1 is not drawn
|
||||
|
||||
* raytracing a revolved sketch seems to work fine, but rtarea and gqa
|
||||
seem to be crashing on that same revolve. curiously, the brep
|
||||
revolve from the csgbrep proc-db has the same failure as well as the
|
||||
brep ehy.
|
||||
|
||||
* ogl display manager still crashes on attach in mged on Mac OS X 10.5
|
||||
|
||||
* running archer "" at least on windows results in a file type dialog
|
||||
and errors with "can't read "_conv_log": no such variable
|
||||
|
||||
* in mged, running the 'attach' command (confirmed issues with X and
|
||||
ogl), closing the window, and then issuing a 'draw' results in mged
|
||||
crashing.
|
||||
|
||||
* killtree / crashes
|
||||
|
||||
* object names with a / or \ in them make ls or underlying directory
|
||||
parsing logic display them incorrectly.
|
||||
|
||||
* search -exec results are inconsistent with search filtered
|
||||
results. for example, "search . -attr ..." returns A B C, but
|
||||
"search . -attr ... -exec attr show {} \;" results in attr show
|
||||
output for A B C as well as subtracted repetitions. For example,
|
||||
say A contains - B - C, then it will show output for A B C B C.
|
||||
|
||||
adding -bool u gets closer to consistent but still appears to repeat
|
||||
the last object
|
||||
|
||||
* fbclear -c appears to hang indefinitely inside pkg_bwaitfor,
|
||||
possible protocol mismatch or capability removed/changed in fbserv.
|
||||
|
||||
* apparently all four BRL-CAD Tutorial Series volumes are missing from
|
||||
our bibliography...
|
||||
|
||||
|
||||
* Tessellating an ETO with a normal tolerance results in stack
|
||||
smashing due to bad logic in recursive algorithm: set norm 2;
|
||||
facetize my.eto my.bot;. Observed infinite recursion in both
|
||||
make_ellipse4() in eto.c and (after adding max recursion test) in
|
||||
paint_face() in manif.c:190
|
||||
|
||||
* bot_dump -o file.obj is possibly generating invalid OBJ files.
|
||||
tested on two different pieces of software including xcode and cura,
|
||||
both failed to read our obj files where stl worked.
|
||||
|
||||
* mater -d information stored in the .g file doesn't survive a
|
||||
garbage collection operation.
|
||||
|
||||
@@ -127,10 +44,36 @@ Recent Bugs
|
||||
still being displayed. this causes 'rt' to fly into an infinite
|
||||
loop, presumably trying to increment rays from the eye position.
|
||||
|
||||
* icv dpix support is not cross-platform (it writes out native, reads
|
||||
in assuming same encoding). regression tests fail on big endian.
|
||||
|
||||
* creating an object with a slashes in the name (e.g., cp foo foo/R)
|
||||
results in an object that cannot be deleted/renamed. bad behavior
|
||||
presumably extends to any name with path separators.
|
||||
|
||||
* mirror command rejects brep solids and turns faces inside-out when
|
||||
mirroring a comb with brep solids below it.
|
||||
|
||||
* rtsil command works if do what usage says and redirect output to
|
||||
file, but mentions .pix when data is actually .bw; and using the -o
|
||||
option results in a black image. it is also inconsistent, writing a
|
||||
black silhouette on a white background, instead of black on white
|
||||
and missing background color options.
|
||||
|
||||
* make sph sph
|
||||
clone -i 1 -t 1000 0 0 -n 100 sph
|
||||
kill sph
|
||||
g line sph*
|
||||
clone -i 1 -t 0 1000 0 -n 100 line
|
||||
kill line
|
||||
g square line*
|
||||
clone -i 1 -t 0 0 1000 -n 100 square
|
||||
... never returns ...
|
||||
|
||||
This should be merely 1M spheres, but something chokes. Could be
|
||||
somewhere in the Tk layer. Maybe somewhere in the db layer. Maybe
|
||||
something is corrupted by clone when it
|
||||
|
||||
* If we draw any form, then trace it using rt, then change of database
|
||||
(by clicking file>open and selecting another database), badness
|
||||
ensues. One report has quitting the rt window causing a segfault.
|
||||
@@ -144,12 +87,31 @@ Recent Bugs
|
||||
in ann3.s annot 0 0 0 1 10 10 3 1
|
||||
# using numbers for a label results in no label
|
||||
|
||||
* make eto eto
|
||||
tol norm 1
|
||||
facetize eto.bot eto
|
||||
[crashes due to excessive recursion]
|
||||
|
||||
* crash in rt_bot_xform() due to a bot being marked as having face
|
||||
normals, but didn't. bot probably written wrong via conversion
|
||||
to/from obj or asc. found importing teapot.
|
||||
|
||||
* rtedge with perspective is wrong. it fills in nearly entire faces,
|
||||
vertically in particular. it's worse on small sized renders, and
|
||||
gets better the larger the render size (indicating there's some
|
||||
neighbor distance coming into play that is not affected by
|
||||
max_dist). eoes not happen in non-perspective ray-traces.
|
||||
|
||||
* a character is (still) sometimes captured by the cursor box. steps
|
||||
to reproduce:
|
||||
1) write a word on the mged command prompt ("e.g. hello")
|
||||
2) select the word to end of line with mouse
|
||||
3) paste the word (e.g., middle mouse) and press enter
|
||||
4) type "hello" again and press enter
|
||||
|
||||
you should now see an "o" in the yellow cursor box. sometimes
|
||||
you'll see the "o" after step 3. running "clear" resets the cursor.
|
||||
|
||||
* get_regions tcl command doesn't respond well to situations where
|
||||
child object names in combs have dashes (the "-" character) in
|
||||
names. It tries to interpret the dash as an argument delimiter.
|
||||
@@ -171,6 +133,13 @@ Recent Bugs
|
||||
* Recursive submodel predictably goes infinite, need stack-based
|
||||
db_walk_tree(): mged> in submodel submodel submodel grid test.g
|
||||
|
||||
* running rt -s20 -F file.pix ... does not result in an 20x20 image
|
||||
being written out. it ends up being 512x512.
|
||||
|
||||
* running rt -C255/0/0 -o file.pix ... does not result in the
|
||||
background color getting used. It does work with -F file.pix, going
|
||||
through libfb instead of libicv.
|
||||
|
||||
* ogl display manager and framebuffer are creating windows with
|
||||
transparent backgrounds (the glClear color is not being drawn) on
|
||||
Linux. Presumably a driver-related issue, alpha channel, or expose
|
||||
@@ -179,6 +148,9 @@ Recent Bugs
|
||||
private memory -- looks like private memory is not initialized
|
||||
(observed on Mac 10.6, Windows, and Ubuntu Linux using 7.26).
|
||||
|
||||
* pixdiff on Windows is reporting no differences with a pair of files
|
||||
that pixcmp can see differences in.
|
||||
|
||||
* fblabel seems quite busted, at least talking to a /dev/X fbserv, in
|
||||
that it only draws the first character and eventually displays
|
||||
rem_read() failures when run in -d debug mode.
|
||||
@@ -187,6 +159,16 @@ Recent Bugs
|
||||
after doing an overlay render. it does draw, though, as confirmed
|
||||
by a forced fb-fb refresh.
|
||||
|
||||
* pixborder doesn't account for an edge case where the right edge of
|
||||
an image is expected to be colored (except for one pixel on the top
|
||||
edge). Example:
|
||||
|
||||
pixborder -b "255 0 0" -t "255 255 255" < pix/moss.pix | pix-fb
|
||||
|
||||
* report that attempting to change units on a read-only file in MGED
|
||||
will not change the units in the file but changes them in MGED,
|
||||
resulting in problems with nirt missing geometry it shouldn't miss.
|
||||
|
||||
* typing 'comb -f -r assembly_name' shuts down mged with the error:
|
||||
ERROR: bad pointer 0000000000B4CA50: s/b bu_external(x768dbbd0), was bu_vls(x89333bbb), file ..\..\..\brlcad_src\src\libbu\parse.c, line 2443"
|
||||
And on the mged command line:
|
||||
@@ -200,6 +182,14 @@ Recent Bugs
|
||||
* wgl framebuffer is not lingering on windows (regardless of using
|
||||
wgll or default) when it should
|
||||
|
||||
* nirt -e "xyz val val val" doesn't work due to the space after the -e
|
||||
and how the nirt/rt commands parse quoted args.
|
||||
|
||||
* calling "attr set obj key value" should always result in key getting
|
||||
set to value, no matter what, as it is the lowest-level attribute
|
||||
management interface and what the command (correctly) documents.
|
||||
example demonstrated to not work was: attr set obj rgb 123/123/123
|
||||
|
||||
* report of LIBBU not working when accessed by a multithreaded
|
||||
application on Windows. reportedly due to some problem with the
|
||||
debug memory queue.
|
||||
@@ -237,16 +227,26 @@ Recent Bugs
|
||||
|
||||
rm -f terra.pix && valgrind bin/rt -o terra.pix -P1 -H3 -s1024 share/brlcad/7.21.0/db/terra.g all.g
|
||||
|
||||
[HARD] valgrind-confirmed 8-byte corruption after a build_spec_table()
|
||||
realloc in find_spec_wgt(), where "bookkeeping seems okay" -- i.e.,
|
||||
root cause is non-obvious. Classic hard-to-pin data race.
|
||||
[FAN-OUT: poor -- a single heisenbug needing one careful
|
||||
investigator, not parallel coverage.]
|
||||
|
||||
* mged 'joint' hold command isn't working. looks like the fp_names
|
||||
book-keeping is fuxored or the db_lookup is returning NULL (or isn't
|
||||
yet performed).
|
||||
|
||||
* idents command is reporting a bogus region count in the region
|
||||
output table listing (first column).
|
||||
|
||||
* src/librt/primitives/bot/g_bot_include.c:rt_bot_bbox() routine isn't
|
||||
calculating the bbox correctly
|
||||
|
||||
* 'exists' command documentation claims more than has been implemented
|
||||
|
||||
* rtxray crashes if you specify a -o *.bw output file due to
|
||||
assumptions in the rt front-end that all output files are .pix
|
||||
|
||||
* raytracing a revolved sketch seems to work fine, but rtarea and gqa
|
||||
seem to be crashing on that same revolve. curiously, the brep
|
||||
revolve from the csgbrep proc-db has the same failure as well as the
|
||||
brep ehy.
|
||||
|
||||
* encountered a crash during rtarea on a (default) facetized version
|
||||
of the hyp from the proc-db csgbrep tool.
|
||||
|
||||
@@ -261,6 +261,12 @@ Recent Bugs
|
||||
* torus with a near zero inner diameter results in zero-length edges
|
||||
during tessellation.
|
||||
|
||||
* opening a database in archer with the same name as a command doesn't
|
||||
work.
|
||||
|
||||
* bu_log() with a width specifier does not align like printf().
|
||||
Example: bu_log("%24s", str);
|
||||
|
||||
* report that "keep" sometimes results in a .g file with unknown units;
|
||||
dbconcat also is reported to set the units to unknown if concatting
|
||||
a file with unknown units.
|
||||
@@ -288,6 +294,10 @@ Recent Bugs
|
||||
|
||||
* rt -i -s4096 -H16 -F/dev/null boolean-ops.g all
|
||||
|
||||
* asc2g of a .asc file containing the first line as a "#" comment
|
||||
results in a bu_malloc(0) bomb. comment lines should be valid in
|
||||
.asc files.
|
||||
|
||||
* compilation reportedly fails when building Tcl if the path to the
|
||||
source directory includes a space.
|
||||
|
||||
@@ -316,9 +326,13 @@ Recent Bugs
|
||||
* edcomb command seems to be busted similar to red, doesn't seem to do
|
||||
anything.
|
||||
|
||||
* gqa manpage has the wrong indentation on the options write-up.
|
||||
|
||||
* Detailed BoT model ray trace image had incorrect background pixel
|
||||
values in framebuffer, off slightly by one.
|
||||
|
||||
* ogl display manager still crashes on attach in mged on Mac OS X 10.5
|
||||
|
||||
* rt is consuming 100% CPU in fb_close() on a lingering ogl
|
||||
framebuffer waiting to close. needs to sleep or select for a while.
|
||||
|
||||
@@ -332,6 +346,10 @@ Recent Bugs
|
||||
|
||||
* report of rt aborting randomly on 64-bit with camo shader.
|
||||
|
||||
* mged raytrace fails with simple "raytrace failed" message when using
|
||||
rt, nirt, etc. on Windows after modifying a region. See sf bug
|
||||
report 2954404.
|
||||
|
||||
* mged rrt command is not respecting the view size, just does
|
||||
something similar to autoview but even gets az/el wrong too.
|
||||
|
||||
@@ -341,6 +359,9 @@ Recent Bugs
|
||||
tclscripts/mged/tclIndex for examples:
|
||||
https://sourceforge.net/tracker/?func=detail&atid=640802&aid=2923199&group_id=105292
|
||||
|
||||
* vdeck truncates the region names in the 'regions' file, probably
|
||||
wrong bu_strlcpy() length.
|
||||
|
||||
* hyp tessellation routine creates bot that does not raytrace
|
||||
|
||||
* hyp used in a boolean with other objects (even unions) does not
|
||||
@@ -412,6 +433,11 @@ Recent Bugs
|
||||
* running 'keep' on too many objects (hundreds is causing a usage
|
||||
statement (and not doing the keep)
|
||||
|
||||
* rtwizard won't display a line overlay if you line object is obscured
|
||||
by another. Example being to display a vehicle as ghost, crew as
|
||||
solid, and crew as line. confirmed even when using the other line
|
||||
occlusion settings.
|
||||
|
||||
* fbserv is receiving image data very slowly if the framebuffer is a
|
||||
remote X24 interface. could reproduce on mac with the following:
|
||||
|
||||
@@ -471,6 +497,9 @@ Recent Bugs
|
||||
ubuntu linux. key events go to the command window even with the
|
||||
graphics window has focus.
|
||||
|
||||
* MGED File->Preferences->Fonts results in error "named font "button
|
||||
_font" doesn't exist on Linux.
|
||||
|
||||
* mged tab-completion doesn't work if the object names have spaces
|
||||
|
||||
* Open dialog in MGED seems rather busted for scrolling and selection
|
||||
@@ -508,6 +537,16 @@ Recent Bugs
|
||||
* dsp primitive is going into what seems to be an unbounded memory
|
||||
allocation loop during prep, inside dsp_layers().
|
||||
|
||||
* crashes during photonmap raytrace of m35 where right node is invalid
|
||||
rt -o test.pix -V 1.0 -P4 -J0 -l7 -A0 ~/Desktop/m35.g all.g box.r sph.r
|
||||
|
||||
* libfb cannot utilize standard output/error "device" files without
|
||||
path trickery. it recognizes the /dev/ prefix and presumes it's a
|
||||
libfb device instead of a filesystem device.
|
||||
|
||||
OK: rt -F/./dev/stdout
|
||||
BAD: rt -F/dev/stdout
|
||||
|
||||
* libfb cannot open a file descriptor when piping/redirecting output.
|
||||
|
||||
OK: rt -F/./dev/stdout moss.g all.g
|
||||
@@ -530,6 +569,8 @@ Recent Bugs
|
||||
* triangulation of some pipe in toyjeep.g fails (rather reliably) on
|
||||
some given bend. fails in nmg_triangulate model().
|
||||
|
||||
* fbhelp sends some of the output to stdout and some to stderr...
|
||||
|
||||
* debugbu 2 immediately reports a bu_vls_free() error.. apparently
|
||||
been a problem since 4.5 days. this occurs because
|
||||
bu_memdebug_add() is not called unless memory checking is enabled
|
||||
@@ -546,6 +587,11 @@ Recent Bugs
|
||||
|
||||
* Create menu.. create "part" boo hiss..
|
||||
|
||||
* wavelet isn't working correctly on a simple image decomposition &
|
||||
reconstruction.
|
||||
|
||||
* query_ray can't find nirt if not installed
|
||||
|
||||
* fbed is looking for /usr/lib/vfont/nonie.r.12
|
||||
|
||||
* mged doesn't check if html_dir does not exist when searching for
|
||||
@@ -565,6 +611,11 @@ Recent Bugs
|
||||
|
||||
* concave arbs give correct wireframe but do not raytrace correctly.
|
||||
|
||||
* rtwizard/rtedge creates incorrect "fuzzy" edge overlay when creating
|
||||
a "Ghost Image with Insert and Lines" that includes a light source
|
||||
and object close to surface (e.g. moss.g; select plane, light, and
|
||||
cone for ghost; select cone for insert and lines.)
|
||||
|
||||
* mged's solid illuminate doesn't work when Lighting is turned on
|
||||
|
||||
* raytrace of zoomed images (e.g., -s64) doesn't work for if_X24
|
||||
@@ -590,13 +641,23 @@ Recent Bugs
|
||||
* mged primitive editor doesn't accept/apply values to disk for
|
||||
certain primitives (e.g. sph)
|
||||
|
||||
* photon map cache file doesn't work (seems to crash rt on use)
|
||||
|
||||
* enabling perspective mode horks shaded mode, also Z clipping
|
||||
shouldn't be required to get the shading.
|
||||
|
||||
* an underlay framebuffer does not underlay with shaded mode
|
||||
|
||||
* rtweight chokes on a .density file that has less than 3 values per
|
||||
line (infinite loop). also gives infinite areas when presented with
|
||||
an empty .density file.
|
||||
|
||||
* rtarea gives incorrect areas when using -H hypersample flag
|
||||
|
||||
* rtweight/gqa volumes seem wrong with simple sphere test case, with
|
||||
values consistently and quickly converging less than the actual
|
||||
volume regardless of the grid size.
|
||||
|
||||
* setting src/librt/db5_io.c's AVS_ADD off in db5_import_attributes
|
||||
causes bad things to happen and it really shouldn't.
|
||||
|
||||
@@ -606,9 +667,35 @@ Recent Bugs
|
||||
* sketches extruded with non-square AB vectors results in inner sketch
|
||||
components not getting scaled properly.
|
||||
|
||||
* rtcheck is ignoring fastgen tagged geometry since no multioverlap
|
||||
handler is set.
|
||||
|
||||
* bot-bldxf fails in db_walk_tree(), interface may have changed
|
||||
|
||||
|
||||
Older Bugs
|
||||
----------
|
||||
|
||||
* several manpages are missing or out of date for various tools
|
||||
|
||||
* X11 framebuffer often fails to display on certain middle bit depth
|
||||
displays. (e.g. 15 or 16 bit depth)
|
||||
|
||||
* mk_lcomb fails on large combinations due to mk_tree_pure() building
|
||||
a left-heavy tree and wdb_put_internal() then recursively performing
|
||||
lookup and put calls.
|
||||
|
||||
|
||||
Annoyances
|
||||
----------
|
||||
|
||||
* matrix edits on objects in mged require you to select a primitive
|
||||
for a coordinate system reference. this can be counterintuitive and
|
||||
confusing.
|
||||
|
||||
* there are frequently modality errors when entering edit mode as
|
||||
control and middle mouse rebind to model edit instead of view edit.
|
||||
|
||||
---
|
||||
Bugs should be reported to the bug tracker on the project website at
|
||||
http://sourceforge.net/tracker/?atid=640802&group_id=105292
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
= BRL-CAD Interface Change Policy
|
||||
:toc: macro
|
||||
|
||||
toc::[]
|
||||
|
||||
== Scope
|
||||
|
||||
This policy defines how BRL-CAD public interfaces may change. Public
|
||||
interfaces include developer APIs, command-line interfaces, graphical
|
||||
interfaces, documented commands, installed headers, public macros,
|
||||
public types, and other behavior users reasonably rely on.
|
||||
|
||||
Renaming an application is not minimally impacting: an application
|
||||
name is the primary way users find and run the tool.
|
||||
|
||||
Every public interface change must be either minimally impacting or
|
||||
formally deprecated.
|
||||
|
||||
== Minimally Impacting
|
||||
|
||||
A minimally impacting change may be made at any time. A change is
|
||||
minimally impacting only when it can be represented by the documented
|
||||
rule language in
|
||||
link:doc/changes/minimally-impacting.rules[doc/changes/minimally-impacting.rules]
|
||||
and emitted by the generated update script.
|
||||
|
||||
If the rule language cannot express a change, either extend the rule
|
||||
language so the generated script can perform the update, or treat the
|
||||
change as formally deprecated.
|
||||
|
||||
Minimally impacting path includes:
|
||||
|
||||
* recently introduced interfaces that have not yet appeared unchanged
|
||||
in two releases;
|
||||
* appreciably broken interfaces that have been unusable for at least
|
||||
two releases and have no secondary utility;
|
||||
* elementary mechanical changes such as renames, parameter reordering,
|
||||
parameter removal, defaulted parameter insertion, equivalent
|
||||
interface substitutions, and header moves.
|
||||
|
||||
For function argument rewrites, BRL-CAD assumes callers are not
|
||||
relying on preprocessor-generated call syntax and are not passing
|
||||
nested function calls as arguments to the changed function. That
|
||||
assumption keeps generated substitutions deterministic and reviewable.
|
||||
|
||||
Rule syntax and generated update-script workflow are documented in
|
||||
link:doc/changes/README.adoc[doc/changes/README.adoc]. The generated
|
||||
build-tree rendering of minimally impacting changes is
|
||||
`doc/changes/minimally-impacting.adoc`.
|
||||
|
||||
== Formally Deprecated
|
||||
|
||||
Any public interface change that is not minimally impacting must
|
||||
follow the formal deprecation process.
|
||||
|
||||
During a major release, such as 7.x to 8.x, any public interface may
|
||||
change without advance notice. Major version changes imply interface
|
||||
incompatibility.
|
||||
|
||||
During a minor release, such as 7.44.x to 7.46.x, a public interface
|
||||
must be deprecated beforehand with advance notice in at least two
|
||||
minor releases and at least 90 days elapsed since the initial release
|
||||
announcement.
|
||||
|
||||
Public interfaces scheduled for change should be listed in
|
||||
link:doc/changes/deprecated.adoc[doc/changes/deprecated.adoc] and
|
||||
visibly marked in the source code. Appropriate markings include
|
||||
`DEPRECATED` declarations, preprocessor warnings, `@DEPRECATED`
|
||||
comments, runtime warnings when they do not disrupt valid usage, and
|
||||
documentation updates.
|
||||
|
||||
After a deprecation window has completed, removed or significantly
|
||||
changed interfaces are listed in
|
||||
link:doc/changes/obsoleted.adoc[doc/changes/obsoleted.adoc].
|
||||
|
||||
== Examples
|
||||
|
||||
Removing `rt_shootray()` after it has been published and documented in
|
||||
multiple releases is not minimally impacting unless a generated rule
|
||||
can update callers to an equivalent interface. Otherwise, it must be
|
||||
listed as deprecated, marked in the headers, announced in releases,
|
||||
and only later obsoleted.
|
||||
|
||||
Renaming `bu_log()` or adding a defaulted first argument can be
|
||||
minimally impacting if the change is listed in
|
||||
`minimally-impacting.rules` and the generated update script rewrites
|
||||
existing callers.
|
||||
+2707
-2441
File diff suppressed because it is too large
Load Diff
@@ -26,8 +26,8 @@ License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this file. If you did not, please contact one of
|
||||
the BRL-CAD project administrators listed at the Github project
|
||||
site https://github.com/BRL-CAD/brlcad/ or listed in the AUTHORS file
|
||||
the BRL-CAD project administrators listed at the SourceForge project
|
||||
site http://sf.net/projects/brlcad/ or listed in the AUTHORS file
|
||||
included as part of the distribution.
|
||||
|
||||
Overview
|
||||
@@ -80,7 +80,10 @@ When referring to BRL-CAD, its source code, documentation, and
|
||||
libraries, the reference is not meant to include or imply 3rd party
|
||||
source code, libraries, and/or applications unless specifically stated
|
||||
otherwise. No endorsement or claim of authorship is implied to any
|
||||
3rd party asset that is included with BRL-CAD.
|
||||
3rd party asset that is included with BRL-CAD. The majority of the
|
||||
3rd party source code, libraries, and applications included with
|
||||
BRL-CAD are located in the src/other/ directory of the source code
|
||||
distribution.
|
||||
|
||||
Copyright
|
||||
---------
|
||||
@@ -98,7 +101,7 @@ arranged. This includes an implicit assignment of copyright for any
|
||||
and all contributions being made. The following notice should be
|
||||
prominent in the BRL-CAD sources:
|
||||
|
||||
Copyright (c) 1984-2026 United States Government as represented by
|
||||
Copyright (c) 1984-2020 United States Government as represented by
|
||||
the U.S. Army Research Laboratory.
|
||||
|
||||
Contact
|
||||
|
||||
@@ -297,6 +297,10 @@ libtclcad: The Tcl-CAD library is a thin interface that assists in the
|
||||
binding of an image to a Tk graphics context.
|
||||
Depends on: libbn libbu libfb libtcl libtk
|
||||
|
||||
libtermio: The terminal I/O library is a TTY control library for
|
||||
managing a terminal interface.
|
||||
Depends on nothing
|
||||
|
||||
libwdb: The "write database" library provides a simple interface for
|
||||
the generation of BRL-CAD geometry files supporting a majority of the
|
||||
various primitives available as well as combination/region support.
|
||||
@@ -376,6 +380,8 @@ details on subdirectories and authorship not covered here.
|
||||
Write database library
|
||||
src/mged/
|
||||
Multi-device geometry editor
|
||||
src/other/
|
||||
External frameworks (Tcl/Tk, libpng, zlib, etc.)
|
||||
src/proc-db/
|
||||
Procedural geometry tools, create models programmatically
|
||||
src/remrt/
|
||||
@@ -397,17 +403,14 @@ should be POSIX-compliant Bourne Shell Script. The build system uses
|
||||
the CMake build tool. An initial implementation of a BRL-CAD Geometry
|
||||
Server is written in PHP.
|
||||
|
||||
With release 7.38, BRL-CAD intends to conform strictly with the
|
||||
following ANSI/ISO standards for C and C++ language compilation:
|
||||
|
||||
C : ISO/IEC 9899:2011, i.e. C11
|
||||
C++: ISO/IEC 14882:2017, i.e. C++17
|
||||
|
||||
With release 7.28, BRL-CAD intends to conform strictly with the 2011
|
||||
ANSI/ISO standards for C and C++ language compilation
|
||||
(ISO/IEC 9899:2011, i.e. C11 and ISO/IEC 14882:2011, i.e. C++11).
|
||||
Support for use of necessary non-standard system facilities is
|
||||
handled by build system declarations and preprocessor defines driven
|
||||
by build configuration tests. The working feature set for normal
|
||||
development should be widely supported C++17 features and the subset
|
||||
of C11 that is also valid (and widely supported) C++17.
|
||||
development should be widely supported C++11 features and the subset
|
||||
of C11 that is also valid (and widely supported) C++11.
|
||||
|
||||
C++ is used as an implementation language within libraries, but there
|
||||
are no public C++ APIs in use outside of OpenNURBS. For new work,
|
||||
@@ -415,11 +418,9 @@ public library APIs should expose only C function calls and data
|
||||
except in very specific cases (should be discussed with the
|
||||
development team ahead of time to get consensus on the necessity.)
|
||||
|
||||
There is a C++ interface to the core BRL-CAD libraries called MOOSE
|
||||
that is maintained in a separate repository. It is developed with
|
||||
separation in order to avoid mixing C++ semantics into existing APIs
|
||||
and to ensure clean separation of responsibilities and modularity.
|
||||
|
||||
There is currently no C++ interface to the core BRL-CAD libraries. If
|
||||
such an interface is eventually developed, it will be done separately
|
||||
rather than mixing C++ semantics into existing APIs.
|
||||
|
||||
CODING STYLE & STANDARDS
|
||||
------------------------
|
||||
@@ -453,10 +454,12 @@ colocated with any corresponding source files.
|
||||
Header files private to a library go into that library's directory.
|
||||
Public header files go into the include/ directory on the top level.
|
||||
Public header files should not include any headers that are private.
|
||||
Headers should include any other headers required for correct parsing.
|
||||
Public header files should not include the common header.
|
||||
Headers should include any other headers that they require for correct
|
||||
parsing (this is an on-going clean-up effort). Public header files
|
||||
should not include the common header.
|
||||
|
||||
Headers should generally be included in a particular order:
|
||||
Headers should be included in a particular order. That order is
|
||||
generally as follows:
|
||||
|
||||
- any single "interface" header [optional]
|
||||
- the common header (unless the interface header includes it)
|
||||
@@ -467,15 +470,13 @@ Headers should generally be included in a particular order:
|
||||
Applications may optionally provide an interface header that defines
|
||||
common structures applicable to most or all files being compiled for
|
||||
that application. That interface header will generally be the first
|
||||
file to be included as it usually includes the common header and
|
||||
system headers.
|
||||
|
||||
The common header should always be included before any system header.
|
||||
|
||||
Standard system headers should be included before library system
|
||||
headers. Headers should be written to be self-contained, not
|
||||
requiring other headers be included. If another header is necessary
|
||||
for a header to function correctly, it should include it.
|
||||
file to be included, as it usually includes the common header and
|
||||
system headers. The common header should always be included before
|
||||
any system header. Standard C system headers should be included
|
||||
before library system headers. Headers should be written to be
|
||||
self-contained, not requiring other headers to be necessarily included
|
||||
before they may be used. If another header is necessary for a header
|
||||
to function correctly, it should include it.
|
||||
|
||||
Build System:
|
||||
|
||||
@@ -616,7 +617,7 @@ the end of the file:
|
||||
* indent-tabs-mode: t
|
||||
* c-file-style: "stroustrup"
|
||||
* End:
|
||||
* ex: shiftwidth=4 tabstop=8 cino=N-s
|
||||
* ex: shiftwidth=4 tabstop=8
|
||||
*/
|
||||
|
||||
In emacs, the 'indent-region' command (bound to C-M-\ by default)
|
||||
@@ -807,7 +808,7 @@ DOCUMENTATION
|
||||
BRL-CAD has extensive documentation in various formats and presently
|
||||
maintained in various locations. It is an on-going desire and goal of
|
||||
the project to have all documentation located along with the source
|
||||
code in our Git repository.
|
||||
code in our Subversion (SVN) repository.
|
||||
|
||||
In line with that goal and where beneficial, a large portion of the
|
||||
tutorial documentation is being converted to the DocBook XML format.
|
||||
@@ -828,16 +829,19 @@ it better?" and add documentation accordingly.
|
||||
|
||||
All public library functions and most private or application functions
|
||||
should be appropriately documented using Doxygen/Javadoc style
|
||||
comments. This minimally means that you need to add an additional
|
||||
asterisk to a comment that precedes your functions. Public functions
|
||||
must be exported and imported using per-library macros that precede
|
||||
public symbol declarations (e.g., BU_EXPORT int func();). Example:
|
||||
comments. Without getting into the advanced details, this minimally
|
||||
means that you need to add an additional asterisk to a comment that
|
||||
precedes your functions:
|
||||
|
||||
/**
|
||||
* Computes the answer to the meaning of life, the universe, and
|
||||
* everything.
|
||||
*/
|
||||
MYLIB_EXPORT int mylib_function();
|
||||
int
|
||||
the_answer(void)
|
||||
{
|
||||
return 42;
|
||||
}
|
||||
|
||||
|
||||
TESTING & DEBUGGING
|
||||
@@ -868,7 +872,7 @@ respective library being tested (e.g., src/libbu/tests):
|
||||
|
||||
Note that changes to publicly documented tools and library APIs must
|
||||
adhere to BRL-CAD's change policy. This means changes to any tests
|
||||
may require thoughtful deployment. See CHANGES.adoc for details.
|
||||
may require thoughtful deployment. See the CHANGES file for details.
|
||||
|
||||
These tests are run nightly on BRL-CAD's server to catch problems
|
||||
quickly - developers should be aware of the status of BRL-CAD's tests
|
||||
@@ -896,7 +900,7 @@ binaries in the path/to/builddir/src/libbu/tests build directory.
|
||||
A profile build, useful for some types of performance inspection
|
||||
(e.g., gprof) but not enabled by default, may be specified via:
|
||||
|
||||
cmake .. -DBRLCAD_PROFILING=ON
|
||||
cmake .. -DBRLCAD_ENABLE_PROFILING=ON
|
||||
|
||||
Debug symbols are enabled by default, even for installation, for all
|
||||
libraries and binaries in order to facilitate diagnosing and
|
||||
@@ -917,27 +921,27 @@ gdb> backtrace
|
||||
PATCH SUBMISSION GUIDELINES
|
||||
---------------------------
|
||||
|
||||
To contribute to BRL-CAD, begin by submitting pull requests to the
|
||||
GitHub project at https://github.com/BRL-CAD/brlcad.
|
||||
To contribute to BRL-CAD, begin by submitting modifications to the
|
||||
patches section at http://sf.net/projects/brlcad/. Patches in the
|
||||
unified diff format (diff -u) are generally preferred when modifying
|
||||
existing source or other text files. Otherwise, contributors are
|
||||
welcome to submit their changes in full to the patches tracker as
|
||||
compressed file attachments.
|
||||
|
||||
For an introduction to the standard GitHub workflow for forking and
|
||||
submitting pull requests, see:
|
||||
All text patches should be submitted in the unified diff format where
|
||||
it's feasible to create one either using SVN or using the unmodified
|
||||
original file. This is generally the "-u" option to diff, and is also
|
||||
supported by the SVN diff command:
|
||||
|
||||
https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project
|
||||
https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/working-with-forks
|
||||
svn diff > mychanges.patch
|
||||
|
||||
While working in your fork to prepare your pull request, remember to
|
||||
frequently sync with upstream sources. BRL-CAD uses an active main
|
||||
branch for most of its ongoing work, so this syncing process is
|
||||
particularly important when working with BRL-CAD. Patches need to be
|
||||
based on the latest sources and avoid reverting improvements that have
|
||||
been added to the upstream sources since your fork was created.
|
||||
|
||||
Although the GitHub pull request based workflow is recommended and
|
||||
preferred, if for any reason you cannot use GitHub you may also
|
||||
submit "git format-patch" patches through other channels. See:
|
||||
|
||||
https://git-scm.com/docs/git-format-patch
|
||||
Where possible, patch files should be generated against the latest
|
||||
sources available to make it easier to review and apply the changes.
|
||||
If a modification involves the addition or removal of files, those
|
||||
files can be provided separately with instructions on where they
|
||||
belong (or what should be removed). If SVN cannot be used, please
|
||||
provide the complete release and build number of the files you worked
|
||||
with.
|
||||
|
||||
ANY MODIFICATIONS THAT ARE PROVIDED MUST NOT MODIFY OR CONFLICT WITH
|
||||
THE EXISTING "COPYING" FILE DISTRIBUTION REQUIREMENTS. This means
|
||||
@@ -946,8 +950,7 @@ asked to only provide patches that may legally be incorporated into
|
||||
BRL-CAD under the existing distribution provisions described in the
|
||||
COPYING file.
|
||||
|
||||
Patches that are difficult to apply and/or review are difficult to
|
||||
accept.
|
||||
Patches that are difficult to apply are difficult to accept.
|
||||
|
||||
|
||||
BUGS & UNEXPECTED BEHAVIOR
|
||||
@@ -955,9 +958,9 @@ BUGS & UNEXPECTED BEHAVIOR
|
||||
|
||||
When a bug or unexpected behavior is encountered that cannot be
|
||||
quickly fixed, it needs to be documented in our BUGS file or more
|
||||
formally reported to the GitHub issues tracker at:
|
||||
formally reported to the SourceForge bug tracker at:
|
||||
|
||||
https://github.com/BRL-CAD/brlcad/issues
|
||||
http://sourceforge.net/tracker/?atid=640802&group_id=105292&func=browse
|
||||
|
||||
The tracker is the main source for user-reported bugs and/or any
|
||||
issues that require significant discussion or benefit from having
|
||||
@@ -987,7 +990,7 @@ access to be granted:
|
||||
|
||||
3) Join the brlcad-devel developer mailing list, introduce yourself.
|
||||
|
||||
4) Create a GitHub account, submit at least pull requests that
|
||||
4) Create a SourceForge account, submit at least two patches that
|
||||
demonstrate competency with our coding style, apply flawlessly, and
|
||||
provide some significant improvement.
|
||||
|
||||
@@ -1017,12 +1020,11 @@ expectations. To summarize some of the expected responsibilities:
|
||||
help, or at least to do no harm. Be helpful and respectful.
|
||||
|
||||
1) Developers are expected to uphold the quality, functionality,
|
||||
maintainability, security, and portability of the source code at all
|
||||
times. In part, this means that changes should be tested to avoid
|
||||
breaking the build and short-term fixes are discouraged. Committing
|
||||
code that is actively being worked on is encouraged but care should be
|
||||
taken to minimize impact on others and to respond quickly when an
|
||||
issue arises.
|
||||
maintainability, and portability of the source code at all times. In
|
||||
part, this means that changes should be tested to avoid breaking the
|
||||
build and short-term fixes are discouraged. Committing code that is
|
||||
actively being worked on is encouraged but care should be taken to
|
||||
minimize impact on others and to respond quickly when an issue arises.
|
||||
|
||||
2) Bugs, typos, and compilation errors are to be expected as part of
|
||||
the process of active software development and documentation, but it
|
||||
@@ -1034,12 +1036,6 @@ in resolving the issue promptly. It is the responsibility of all
|
||||
developers to address issues as they are encountered regardless of who
|
||||
introduces the problem.
|
||||
|
||||
To assist developers in these efforts, BRL-CAD utilizes Continuous
|
||||
Integration (CI) testing via the GitHub Actions infrastructure to
|
||||
monitor code health: https://github.com/BRL-CAD/brlcad/actions
|
||||
Under normal conditions, all developers should strive to keep all
|
||||
GitHub Actions tests passing.
|
||||
|
||||
3) Contributors making commits to the repository are required to
|
||||
uphold the legal conventions and requirements summarized in the
|
||||
COPYING file. This includes the implicit assignment of copyright to
|
||||
@@ -1227,7 +1223,7 @@ or data corruption issue involved. That said, binary releases may be
|
||||
re-posted with a modified name per the convention described in VERSION
|
||||
NUMBERS & COMPATIBILITY.
|
||||
|
||||
Example: BRL-CAD_7.12.2.dmg is superseded by BRL-CAD_7.12.2-1.dmg
|
||||
Example: BRL-CAD-7.12.2.dmg is superseded by BRL-CAD-7.12.2-1.dmg
|
||||
|
||||
Older binary releases may be moved to the hidden attic folder, though
|
||||
not necessary or recommended except where critical vulnerabilities are
|
||||
@@ -1258,100 +1254,47 @@ Release steps are as follows:
|
||||
#####################################################################
|
||||
# 00: Notify developer mailing list of intention to release.
|
||||
|
||||
echo "Release preparations are under way. Trunk sources merged to the RELEASE branch will be reviewed for sync to STABLE and release tagging. Please help test by compiling distcheck and running benchmark, mged, and archer." | mail -s "Release preparations commencing" brlcad-devel@lists.sourceforge.net -r "your@subscribed.address"
|
||||
echo "Release preparations are under way. Trunk sources merged to the RELEASE branch will be reviewed for sync to STABLE and release tagging. Please help test by compiling distcheck-full and running benchmark, mged, and archer." | mail -s "Release preparations commencing" brlcad-devel@lists.sourceforge.net -r "your@subscribed.address"
|
||||
|
||||
#####################################################################
|
||||
# 01: Sync main to RELEASE branch.
|
||||
# 01: Sync trunk to RELEASE branch.
|
||||
|
||||
TODO - we probably need to do a re-look at the RELEASE and STABLE setup.
|
||||
With Git and modern workflows, I'm leaning more towards a temporary
|
||||
working branch where we shake down for release, then tagging from that
|
||||
working branch and merging that back into main once complete. For
|
||||
minor releases we should create a X-XX branch from the X-XX-0 tag, and
|
||||
any patch releases on that minor series will be handled in and tagged
|
||||
from the branch. With AI driven change rates, it's unrealistic to
|
||||
try and put main back into a state where we can call a tag off of it
|
||||
a patch on an older minor. Needs more thought - should try to hash out
|
||||
before the next minor release and update the workflow.
|
||||
# NON-AUTO: Review the log and obtain the last trunk merge
|
||||
# revision number from comments.
|
||||
svn log --stop-on-copy https://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE | grep -E 'r[0-9]{5}'
|
||||
PREV=[[last_trunk_rev]]
|
||||
echo "PREV=$PREV"
|
||||
|
||||
git clone git@github.com:BRL-CAD/brlcad.git
|
||||
cd brlcad
|
||||
git checkout RELEASE
|
||||
|
||||
# NOTE - it is not strictly necessary to use the strategy-option,
|
||||
# but barring some specific reason not to the goal will be to
|
||||
# have RELEASE match the contents of main. The "theirs"
|
||||
# strategy option helps simplify that process.
|
||||
|
||||
git merge --strategy-option theirs main
|
||||
|
||||
# NON-AUTO: The merge may succeed without conflicts. If
|
||||
# not, you will see the message:
|
||||
#
|
||||
# Automatic merge failed; fix conflicts and then commit the result.
|
||||
#
|
||||
# To see what the problem was, use git status:
|
||||
|
||||
git status
|
||||
On branch RELEASE
|
||||
Your branch is ahead of 'origin/RELEASE' by 1 commit.
|
||||
(use "git push" to publish your local commits)
|
||||
|
||||
You have unmerged paths.
|
||||
(fix conflicts and run "git commit")
|
||||
(use "git merge --abort" to abort the merge)
|
||||
|
||||
Changes to be committed:
|
||||
[list of cleanly merged changes]
|
||||
|
||||
Unmerged paths:
|
||||
(use "git add <file>..." to mark resolution)
|
||||
[list of conflict files]
|
||||
|
||||
# The unmerged files must be inspected and their final form
|
||||
# decided upon. This can be done manually by editing the
|
||||
# files to put them in their desired final state and using
|
||||
# "git add" to mark them resolved, but it is usually more
|
||||
# convenient and less error prone to use the git mergetool
|
||||
# command with one of a number of tools designed for merge
|
||||
# work. For users new to this process practicing on a
|
||||
# throw-away copy of the repository is recommended before
|
||||
# doing a merge in earnest.
|
||||
#
|
||||
# See https://git-scm.com/docs/git-mergetool for details
|
||||
#
|
||||
# Some commonly used mergetool options:
|
||||
# [meld] https://meldmerge.org/help/resolving-conflicts.html
|
||||
# [vimdiff] https://gist.github.com/karenyyng/f19ff75c60f18b4b8149
|
||||
|
||||
git mergetool
|
||||
svn co https://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE brlcad.RELEASE
|
||||
cd brlcad.RELEASE
|
||||
svn merge https://svn.code.sf.net/p/brlcad/code/brlcad/trunk@$PREV https://svn.code.sf.net/p/brlcad/code/brlcad/trunk@HEAD .
|
||||
|
||||
#####################################################################
|
||||
# 02: Test the merge.
|
||||
|
||||
# NON-AUTO: Confirm versioning in include/conf/.
|
||||
# BRLCAD_VERSION_AMEND may be defined during CMake for an
|
||||
# amendment build.
|
||||
|
||||
mkdir -p .build && cd .build
|
||||
cmake .. -DENABLE_ALL=ON -DCMAKE_BUILD_TYPE=Release && make
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release && make
|
||||
|
||||
# NON-AUTO: Manually check rt, mged, and archer.
|
||||
bin/rt # should report usage with correct library versions
|
||||
bin/mged -c test.g "make sph sph ; draw sph ; rt ; after 1000 ; l sph" # create, view and list info about a sphere
|
||||
bin/mged # displays gui, run: opendb [file join [bu_dir init] test.g] ; draw sph ; rt
|
||||
bin/archer # displays gui, run: opendb <path to your build dir>/test.g ; draw sph ; rt
|
||||
bin/mged # displays gui, run: opendb test.g ; draw sph ; rt
|
||||
bin/archer # displays gui, run: opendb test.g ; draw sph ; rt
|
||||
|
||||
# clean up
|
||||
cd .. && rm -rf .build
|
||||
|
||||
#####################################################################
|
||||
# 03: Commit the merge (if necessary).
|
||||
# 03: Commit the merge.
|
||||
|
||||
# Note - we don't push the merge at this stage, since we
|
||||
# will be using the upstream RELEASE branch when we generate a
|
||||
# ChangeLog file.
|
||||
CURR=`svn log --xml https://svn.code.sf.net/p/brlcad/code/brlcad/trunk | grep 'revision=' | head -n 1 | sed 's/.*="\([0-9][0-9]*\)".*/\1/g'`
|
||||
echo "CURR=$CURR"
|
||||
|
||||
# If merge conflict resolution was needed, make a merge commit:
|
||||
MSHA1=$(git log -1 main --pretty=format:"%h")
|
||||
echo $MSHA1
|
||||
git commit -m "merge of main $MSHA1 to RELEASE branch"
|
||||
svn commit -m "merge of trunk to RELEASE branch, r$PREV through r$CURR"
|
||||
|
||||
#####################################################################
|
||||
# 04: Reprioritize or address remaining TODO items.
|
||||
@@ -1362,21 +1305,12 @@ before the next minor release and update the workflow.
|
||||
# 05: Review all commits.
|
||||
|
||||
# NON-AUTO: Verify all user-visible changes are in NEWS.
|
||||
# NON-AUTO: Verify all interface changes are in CHANGES.adoc or doc/changes/.
|
||||
# NON-AUTO: Verify all interface changes are in CHANGES.
|
||||
# NON-AUTO: Verify usage/options are documented in doc/.
|
||||
|
||||
# A useful trick for this step is to use gitk to display all
|
||||
# commits made since the last time the RELEASE branch was
|
||||
# updated:
|
||||
|
||||
gitk --no-merges origin/RELEASE..RELEASE
|
||||
|
||||
#####################################################################
|
||||
# 06: Update the version numbers.
|
||||
|
||||
# NOTE - BRLCAD_VERSION_AMEND may also be defined during CMake
|
||||
# for an amendment build.
|
||||
|
||||
# NON-AUTO: NEWS
|
||||
# NON-AUTO: README
|
||||
# NON-AUTO: include/conf/PATCH
|
||||
@@ -1386,115 +1320,61 @@ before the next minor release and update the workflow.
|
||||
# NON-AUTO: misc/macosx/Resources/Welcome.rtfd/TXT.rtf
|
||||
|
||||
#####################################################################
|
||||
# 07: Create branch for release in bext repository.
|
||||
# 07: Update ChangeLog. Use the YYYY-MM-DD of previous NEWS entry.
|
||||
|
||||
MAJOR=`awk '{print $1}' include/conf/MAJOR`
|
||||
MINOR=`awk '{print $1}' include/conf/MINOR`
|
||||
PATCH=`awk '{print $1}' include/conf/PATCH`
|
||||
cd ..
|
||||
git clone git@github.com:BRL-CAD/bext.git
|
||||
cd bext
|
||||
git checkout RELEASE
|
||||
git branch rel-$MAJOR-$MINOR-$PATCH
|
||||
git checkout rel-$MAJOR-$MINOR-$PATCH
|
||||
git push --set-upstream origin rel-$MAJOR-$MINOR-$PATCH
|
||||
cd ../brlcad
|
||||
LAST=`grep -E "\--- [0-9]{4}-[0-9]{2}-[0-9]{2}" NEWS | head -n 2 | tail -n 1 | awk '{print $2}'`
|
||||
echo "LAST=$LAST"
|
||||
LAST=r57446
|
||||
svn2cl --break-before-msg --include-rev --stdout -r HEAD:{$LAST} > ChangeLog
|
||||
svn commit -m "update log with commits through $LAST" ChangeLog
|
||||
|
||||
#####################################################################
|
||||
# 08: Update the bext submodule in BRL-CAD's main repository.
|
||||
# 08: Run distcheck-full on at least two platforms.
|
||||
|
||||
# NON-AUTO: Update BEXT_SHA1 hash in CMakeLists.txt (argument
|
||||
# to brlcad_bext_init function). If already pointing to the
|
||||
# sha1 being used for the bext rel-$MAJOR-$MINOR-$PATCH branch
|
||||
# this is a no-op - otherwise, commit the update.
|
||||
|
||||
git add CMakeLists.txt
|
||||
git commit -m "Update bext submodule to SHA1 <hashval>"
|
||||
mkdir -p .build && cd .build && cmake .. && make distcheck-full
|
||||
|
||||
#####################################################################
|
||||
# 09: Update ChangeLog.
|
||||
# 09: Sync RELEASE to STABLE branch:
|
||||
|
||||
# We have held off pushing to upstream RELEASE branch until now,
|
||||
# so we can use that as an anchor point from which to start the
|
||||
# ChangeLog logging. If for some reason that won't work, replace
|
||||
# origin/RELEASE with the sha1 of the previous release's final
|
||||
# commit in the RELEASE branch.
|
||||
# Update the NEWS release date for the current release to today's date
|
||||
|
||||
# We do this instead of date based logging to capture commits that
|
||||
# may have been originally made before the last release (i.e. older
|
||||
# commits made in a fork and incorporated into the history via PR)
|
||||
# NON-AUTO: Review the log and obtain the last merge revision
|
||||
# number from comments.
|
||||
svn log --stop-on-copy https://svn.code.sf.net/p/brlcad/code/brlcad/branches/STABLE | less
|
||||
PREV=[[last_trunk_rev]]
|
||||
### OR ###
|
||||
PREV=`svn log --xml --stop-on-copy https://svn.code.sf.net/p/brlcad/code/brlcad/branches/STABLE | grep 'revision=' | head -n 1 | sed 's/.*revision="\([0-9][0-9]*\)".*/\1/g'`
|
||||
echo "PREV=$PREV"
|
||||
|
||||
git log origin/RELEASE..RELEASE > ChangeLog
|
||||
git add ChangeLog
|
||||
git commit -m "Update log with commits being incorporated into rel-$MAJOR-$MINOR-$PATCH"
|
||||
|
||||
# Now that we have updated the ChangeLog, push the changes to
|
||||
# upstream RELEASE branch.
|
||||
|
||||
git push
|
||||
# merge that range of changes into STABLE
|
||||
svn co https://svn.code.sf.net/p/brlcad/code/brlcad/branches/STABLE brlcad.STABLE && cd brlcad.STABLE
|
||||
svn merge https://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE@$PREV https://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE@HEAD .
|
||||
|
||||
#####################################################################
|
||||
# 10: Run distcheck on at least two platforms.
|
||||
|
||||
mkdir -p .build && cd .build && cmake .. && make distcheck
|
||||
|
||||
#####################################################################
|
||||
# 11: Sync RELEASE to STABLE branch:
|
||||
|
||||
# NON-AUTO: Update the NEWS release date for the current release to today's date
|
||||
git add NEWS
|
||||
MAJOR=`awk '{print $1}' include/conf/MAJOR`
|
||||
MINOR=`awk '{print $1}' include/conf/MINOR`
|
||||
PATCH=`awk '{print $1}' include/conf/PATCH`
|
||||
UTCDATE=$(date -u)
|
||||
git commit -m "Finalize $MAJOR.$MINOR.$PATCH release date ($UTCDATE)"
|
||||
|
||||
# merge RELEASE into STABLE.
|
||||
git checkout STABLE
|
||||
git merge --strategy-option theirs RELEASE
|
||||
|
||||
# NON-AUTO: Resolve any conflicts as before, although note that
|
||||
# the intent is usually for STABLE to match RELEASE so normally
|
||||
# the resolution will be to make STABLE match the state of RELEASE
|
||||
|
||||
#####################################################################
|
||||
# 12: If there are any differences between RELEASE and STABLE trees,
|
||||
test the merge. In normal usage STABLE should match RELEASE,
|
||||
so this is only necessary in unusual circumstances. To check
|
||||
if there are any differences, use git diff:
|
||||
|
||||
git diff RELEASE STABLE
|
||||
|
||||
# NON-AUTO: If differences were observed, either correct them
|
||||
# or (if expected) test:
|
||||
# 10: Test the merge.
|
||||
|
||||
mkdir .merge && cd .merge
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release && make distcheck && cd .. && rm -rf .merge
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release && make distcheck-full && cd .. && rm -rf .merge
|
||||
|
||||
#####################################################################
|
||||
# 13: Let upstream know about the new state of STABLE.
|
||||
# 11: Commit the merge.
|
||||
|
||||
# If merge conflict resolution was needed, make a merge commit:
|
||||
RSHA1=$(git log -1 RELEASE --pretty=format:"%h")a
|
||||
echo $RSHA1
|
||||
git commit -m "merge of RELEASE $RSHA1 to STABLE branch"
|
||||
CURR=`svn log --xml https://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE | grep 'revision=' | head -n 1 | sed 's/.*="\([0-9][0-9]*\)".*/\1/g'`
|
||||
echo "CURR=$CURR"
|
||||
|
||||
# Let upstream know what has changed
|
||||
git push
|
||||
svn commit -m "merging RELEASE branch to STABLE branch, r$PREV through r$CURR"
|
||||
|
||||
#####################################################################
|
||||
# 14: Tag the release using "rel-MAJOR-MINOR-PATCH" format:
|
||||
# 12: Tag the release using "rel-MAJOR-MINOR-PATCH" format:
|
||||
|
||||
MAJOR=`awk '{print $1}' include/conf/MAJOR`
|
||||
MINOR=`awk '{print $1}' include/conf/MINOR`
|
||||
PATCH=`awk '{print $1}' include/conf/PATCH`
|
||||
echo "Tagging rel-$MAJOR-$MINOR-$PATCH"
|
||||
UTCDATE=$(date -u)
|
||||
git tag -a rel-$MAJOR-$MINOR-$PATCH -m "Tag rel-$MAJOR-$MINOR-$PATCH ($UTCDATE)"
|
||||
git push origin rel-$MAJOR-$MINOR-$PATCH
|
||||
svn cp https://svn.code.sf.net/p/brlcad/code/brlcad/branches/STABLE https://svn.code.sf.net/p/brlcad/code/brlcad/tags/rel-$MAJOR-$MINOR-$PATCH
|
||||
|
||||
#####################################################################
|
||||
# 15: Increment and commit the next BRL-CAD release numbers.
|
||||
# 13: Increment and commit the next BRL-CAD release numbers to SVN.
|
||||
|
||||
# Update the include/conf/(MAJOR|MINOR|PATCH) version files
|
||||
# immediately to odd-numbered minor version or new patch developer
|
||||
@@ -1504,65 +1384,64 @@ before the next minor release and update the workflow.
|
||||
echo "`expr $PATCH + 1`" > include/conf/PATCH
|
||||
NEXT="`expr $PATCH + 2`"
|
||||
perl -pi -e "s/Release [0-9]+\.[0-9]+\.[0-9]+/Release $MAJOR.$MINOR.$NEXT/" README
|
||||
|
||||
# TODO - this doesn't seem to work, at least on Linux?
|
||||
#EXPR="s/(@---[[:space:]@-]*[0-9]{4}-)([0-9]{2}-[0-9]{2})([[:space:]]*Release[[:space:]]*${MAJOR}\.${MINOR}\.)(${PATCH})([[:space:]@-]*-@)/\$1XX-XX\${3}${NEXT}\$5@* TBD@@\1\2\3\4\5/"
|
||||
#cat NEWS | tr '\n' '@' | perl -pi -e "$EXPR" | tr '@' '\n' > NEWS
|
||||
|
||||
git add include/conf/PATCH README NEWS
|
||||
git commit -m "Bump to next development revision after tagging the $MAJOR.$MINOR.$PATCH release"
|
||||
git push
|
||||
EXPR="s/(@---[[:space:]@-]*[0-9]{4}-)([0-9]{2}-[0-9]{2})([[:space:]]*Release[[:space:]]*${MAJOR}\.${MINOR}\.)(${PATCH})([[:space:]@-]*-@)/\$1XX-XX\${3}${NEXT}\$5@* TBD@@\1\2\3\4\5/"
|
||||
cat NEWS | tr '\n' '@' | perl -pi -e "$EXPR" | tr '@' '\n' > NEWS
|
||||
svn commit -m "bump to next development revision after tagging the $MAJOR.$MINOR.$PATCH release" ../include/conf/PATCH
|
||||
|
||||
#####################################################################
|
||||
# 16: Sync RELEASE changes back to main.
|
||||
# 14: Sync RELEASE changes back to trunk.
|
||||
|
||||
git checkout main
|
||||
git merge RELEASE
|
||||
|
||||
# NON-AUTO - resolve any conflicts
|
||||
|
||||
# If merge conflict resolution was needed, make a merge commit:
|
||||
RSHA1=$(git log -1 RELEASE --pretty=format:"%h")a
|
||||
echo $RSHA1
|
||||
git commit -m "merge of RELEASE $RSHA1 to main branch"
|
||||
|
||||
git push
|
||||
# Work-in-progress
|
||||
|
||||
#####################################################################
|
||||
# 17: Obtain a tagged version of the sources from the repository, make
|
||||
# 15: Obtain a tagged version of the sources from the repository, make
|
||||
# final distribution tarballs:
|
||||
|
||||
git checkout rel-$MAJOR-$MINOR-$PATCH
|
||||
mkdir .build && cd .build
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release && make distcheck
|
||||
svn checkout https://svn.code.sf.net/p/brlcad/code/brlcad/tags/rel-$MAJOR-$MINOR-$PATCH brlcad-$MAJOR.$MINOR.$PATCH
|
||||
cd brlcad-$MAJOR.$MINOR.$PATCH-build && mkdir .build && cd .build
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release && make distcheck-full
|
||||
|
||||
#####################################################################
|
||||
# 18: Upload the source distributions and release notes. Use source
|
||||
# 16: Upload the source distributions and release notes. Use source
|
||||
# tarballs to create binaries.
|
||||
|
||||
# NON-AUTO: Select the new tag at https://github.com/BRL-CAD/brlcad/releases/new
|
||||
#
|
||||
# Upload the NEWS entries and description for the web page's
|
||||
# release notes. Attach the tar.gz, tar.bz2 and .zip files as
|
||||
# the initial archives. Releases may be edited to add new files,
|
||||
# so go ahead and publish the release to have our default webpage
|
||||
# correctly reflect the most recent release.
|
||||
# create a shell session and source dir
|
||||
SFUSERNAME=`ls ~/.subversion/auth/svn.simple/* | xargs -n 1 grep -A4 sourceforge | tail -1`
|
||||
echo "SFUSERNAME=$SFUSERNAME MAJOR=$MAJOR MINOR=$MINOR PATCH=$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net create
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH"
|
||||
|
||||
# create binary dirs (as needed)
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ Runtime\ Libraries/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ BSD/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ Linux/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ Mac\ OS\ X/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ Windows/$MAJOR.$MINOR.$PATCH"
|
||||
|
||||
TODO - It would be nice to have some curated scripts for binary creation.
|
||||
For Linux I usually set up a fresh Rocky Linux image with a clean environment
|
||||
and install just what is needed to try and get a "this will probably run
|
||||
anywhere" binary, but as a manual process that's a pain - maybe there's a way
|
||||
to script qemu to do the job for us...
|
||||
# upload source dist and any binaries
|
||||
scp brlcad-$MAJOR.$MINOR.$PATCH* "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH/."
|
||||
|
||||
Windows is still completely manual. The .msi installer depends on an older
|
||||
version of WiX, and I don't know of another good solution there - we probably need
|
||||
to investigate whether we could produce MSIX packages instead.
|
||||
# extract and upload release notes to source dir
|
||||
cat ../NEWS | tr '\n' '@' | perl -p -e "s/.*?(@---[[:space:]@-]*[0-9]{4}-[0-9]{2}-[0-9]{2}[[:space:]]*Release[[:space:]]*${MAJOR}\.${MINOR}\.${PATCH}[[:space:]@-]*.*?)@---.*/\1/" | tr '@' '\n' > README-${MAJOR}-${MINOR}-${PATCH}.txt
|
||||
echo "Release notes for $MAJOR.$MINOR.$PATCH" && echo "==="
|
||||
cat README-$MAJOR-$MINOR-$PATCH.txt && echo "==="
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH/."
|
||||
|
||||
Mac - TODO.
|
||||
# NON-AUTO: Following the NAMING A BINARY RELEASE convention,
|
||||
# upload any release binaries and platform-specific release notes.
|
||||
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ Runtime\ Libraries/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ BSD/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ Linux/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ Mac\ OS\ X/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ Windows/$MAJOR.$MINOR.$PATCH/."
|
||||
|
||||
# NON-AUTO: Be sure to mark binaries as default download, then
|
||||
# close shell session
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net shutdown
|
||||
|
||||
#####################################################################
|
||||
# 19: Notify binary platform maintainers:
|
||||
# 17: Notify binary platform maintainers:
|
||||
|
||||
T2 package maintainer
|
||||
http://t2-project.org/packages/brlcad.html
|
||||
@@ -1589,7 +1468,7 @@ Mac - TODO.
|
||||
https://fedoraproject.org/wiki/User:Germano#Contact
|
||||
|
||||
#####################################################################
|
||||
# 20: Announce the new release.
|
||||
# 18: Announce the new release.
|
||||
|
||||
The NEWS file should generally be used as a basis for making release
|
||||
announcements though the announcements almost always require
|
||||
@@ -1668,7 +1547,7 @@ Multiple platform major release and announcements:
|
||||
copyboy@cadcam-insider.com
|
||||
|
||||
#####################################################################
|
||||
# 21: Sit back and enjoy a beverage for a job well done.
|
||||
# 19: Sit back and enjoy a beverage for a job well done.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,28 +1,32 @@
|
||||
The Installation Guide to BRL-CAD
|
||||
=================================
|
||||
|
||||
This document covers the installing BRL-CAD from either a source or binary
|
||||
distribution. Please see REPORTING PROBLEMS to troubleshoot.
|
||||
This document covers the basics of installing BRL-CAD from either a
|
||||
source or binary distribution. Please see the 'Reporting Problems'
|
||||
section if you run into any trouble installing BRL-CAD.
|
||||
|
||||
Some platforms have additional platform-specific documentation provided in the
|
||||
doc/ directory with additional information. This presently includes the
|
||||
following:
|
||||
Some platforms have additional platform-specific documentation
|
||||
provided in the doc/ directory of the source distribution that should
|
||||
be consulted if that is the platform you are installing on. This
|
||||
presently includes the following:
|
||||
|
||||
doc/README.AIX -- IBM's Advanced Interactive eXecutive OS
|
||||
doc/README.BSD -- FreeBSD, NetBSD, OpenBSD, etc.
|
||||
doc/README.IRIX -- SGI IRIX and IRIX64
|
||||
doc/README.Linux -- Various Linux distributions
|
||||
doc/README.MacOSX -- Apple Mac OS X
|
||||
doc/README.Solaris -- Oracle Solaris, OpenIndiana (Illumos), etc.
|
||||
doc/README.Windows -- Microsoft Windows
|
||||
doc/README.VAX -- Virtual Address eXtension architecture from DEC.
|
||||
One of the original BRL-CAD platforms. These
|
||||
days, re-created using the simh simulator.
|
||||
doc/README.Windows -- Microsoft Windows
|
||||
|
||||
|
||||
TABLE OF CONTENTS
|
||||
-----------------
|
||||
Introduction
|
||||
Table of Contents
|
||||
Quick Source Install
|
||||
Quick Installation
|
||||
Installing from Binary
|
||||
Installing from Source
|
||||
Testing Functionality
|
||||
@@ -31,35 +35,53 @@ TABLE OF CONTENTS
|
||||
Configuration Options
|
||||
|
||||
|
||||
QUICK SOURCE INSTALL
|
||||
--------------------
|
||||
QUICK INSTALLATION
|
||||
------------------
|
||||
|
||||
See https://brlcad.org/wiki/Compiling for a platform-specific walk-through
|
||||
including instructions for building on Windows.
|
||||
Note that the downloaded files have two check sums calculated
|
||||
automatically by the Source Forge file release system. The values are
|
||||
used to verify the integrity of the files as distributed. Get those
|
||||
data by clicking on the 'i' button at the end of each file's name.
|
||||
You should ensure those data are retained and kept with the files if
|
||||
you re-distribute them.
|
||||
|
||||
Required tools:
|
||||
- Git must be 2.17 or later
|
||||
- CMake must be 3.26 or later
|
||||
- Compiler must be C++17-compliant
|
||||
- If using Visual Studio, version 2019 (16.8+) or later
|
||||
- If using GCC/G++, version 7 or later
|
||||
- If using LLVM/Clang 5 or later
|
||||
- If using Intel, version 19.0.1 or later
|
||||
|
||||
Steps to compile, test, and install an optimized BRL-CAD on non-Windows
|
||||
platforms:
|
||||
If you downloaded a binary distribution of BRL-CAD for your system,
|
||||
please read the INSTALLING FROM BINARY section of this document down
|
||||
below. The rest of this quick installation section is only relevant
|
||||
to source code distributions of BRL-CAD.
|
||||
|
||||
git clone https://github.com/BRL-CAD/brlcad.git
|
||||
mkdir brlcad/build
|
||||
cd brlcad/build
|
||||
cmake .. -DENABLE_ALL=ON -DCMAKE_BUILD_TYPE=Release
|
||||
make -j4
|
||||
make check
|
||||
sudo make install
|
||||
For the impatient or simplistic, the following steps should compile,
|
||||
test, and install an optimized BRL-CAD quickly into the /usr/brlcad/rel-X.Y.Z
|
||||
directory if CMake is installed on your system:
|
||||
|
||||
Once installed, run bin/mged or bin/archer to launch BRL-CAD's GUI apps. See
|
||||
POST-INSTALLATION for instruction adding bin/ folder to your system PATH to
|
||||
more easily run geometry converters.
|
||||
gunzip brlcad-X.Y.Z.tar.gz
|
||||
tar -xvf brlcad-X.Y.Z.tar
|
||||
mkdir brlcad-build
|
||||
cd brlcad-build
|
||||
cmake ../brlcad-X.Y.Z -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
|
||||
make
|
||||
make benchmark
|
||||
make regress
|
||||
make install # as root, e.g. sudo make install
|
||||
|
||||
If any of the listed steps fail, then something unexpected happened.
|
||||
See the REPORTING PROBLEMS section of this document to report the
|
||||
problem or the INSTALLING FROM SOURCE section for more comprehensive
|
||||
instructions.
|
||||
|
||||
Once installed, add /usr/brlcad/rel-X.Y.Z/bin to your path, and you should be
|
||||
able to run any of the 400+ applications that constitute BRL-CAD. For
|
||||
example, to run the MGED solid modeler:
|
||||
|
||||
PATH=/usr/brlcad/rel-X.Y.Z/bin:$PATH ; export PATH
|
||||
mged
|
||||
|
||||
If you use tcsh or another C-shell based command shell, use this
|
||||
instead:
|
||||
|
||||
set path=( /usr/brlcad/rel-X.Y.Z/bin $path ) ; rehash
|
||||
mged
|
||||
|
||||
|
||||
INSTALLING FROM BINARY
|
||||
@@ -74,128 +96,93 @@ and Windows etc.
|
||||
|
||||
Generic Binary Distributions:
|
||||
|
||||
For binary distributions that are simply compressed tarballs of the
|
||||
installation root, they should contain the entire hierarchy of the
|
||||
distribution. To put that hierarchy in its "installed" location, you just
|
||||
create the directory and move the expanded tarball contents:
|
||||
For the unspecialized binary distributions that are basically
|
||||
compressed tarballs of the installation root, they should contain the
|
||||
entire hierarchy of the distribution. To put that hierarchy in its
|
||||
"installed" location, you just create the directory and move the
|
||||
expanded tarball contents:
|
||||
|
||||
gunzip BRL-CAD_X.Y.Z_Linux_ia64.tar.gz
|
||||
tar -xvf BRL-CAD_X.Y.Z_Linux_ia64.tar
|
||||
sudo mkdir /usr/brlcad/rel-X.Y.Z
|
||||
sudo mv BRL-CAD_X.Y.Z_Linux_ia64/* /usr/brlcad/rel-7.X.Y/
|
||||
gunzip BRL-CAD_7.2.4_Linux_ia64.tar.gz
|
||||
tar -xvf BRL-CAD_7.2.4_Linux_ia64.tar
|
||||
sudo mkdir /usr/brlcad/rel-7.2.4
|
||||
sudo mv BRL-CAD_7.2.4_Linux_ia64/* /usr/brlcad/rel-7.2.4/
|
||||
|
||||
Of course, there are other compression options possible including zip and
|
||||
bzip2. By default, BRL-CAD expects to be installed into /usr/brlcad/rel-X.Y.Z.
|
||||
On some platforms the binary may be relocatable, but this is not guaranteed.
|
||||
It's recommended that you start from a source distribution if you would like to
|
||||
install into an alternate installation location. That said, if you do desire
|
||||
to install and/or run BRL-CAD from a different location, give it a try...on
|
||||
some platforms it will work.
|
||||
Of course, there are other compression options possible including zip
|
||||
and bzip2. By default, BRL-CAD expects to be installed into
|
||||
/usr/brlcad/rel-7.2.4. On some platforms the binary may be relocatable,
|
||||
but this is not guaranteed. It's recommended that you start from a source
|
||||
distribution if you would like to install into an alternate installation
|
||||
location. That said, if you do desire to install and/or run BRL-CAD from
|
||||
a different location, give it a try...on some platforms it will work.
|
||||
|
||||
Something to be aware of, even if a binary distribution IS relocatable: it will
|
||||
use its local copies of things like libraries only so long as the "final"
|
||||
installed target directory that the build was compiled for does not contain a
|
||||
BRL-CAD installation. Due to the way path logic is set, an installed copy of a
|
||||
library in the correct location will always be loaded first, regardless of the
|
||||
presence of a "local" copy.
|
||||
Something to be aware of, even if a binary distribution IS relocatable:
|
||||
it will use its local copies of things like libraries only so long as the
|
||||
"final" installed target directory that the build was compiled for
|
||||
does not contain a BRL-CAD installation. Due to the way path logic
|
||||
is set, an installed copy of a library in the correct location will
|
||||
always be loaded first, regardless of the presence of a "local" copy.
|
||||
|
||||
|
||||
Mac OS X Disk Mounting Image:
|
||||
|
||||
Mount the .dmg and run the Installer .pkg contained therein. This will install
|
||||
into /usr/brlcad/rel-X.Y.Z and will only require confirming that your
|
||||
environment is set up properly (i.e. add /usr/brlcad/rel-X.Y.Z/bin to your
|
||||
Mount the .dmg and run the Installer .pkg contained therein. This
|
||||
will install into /usr/brlcad/rel-X.Y.Z and will only require confirming that
|
||||
your environment is set up properly (i.e. add /usr/brlcad/rel-X.Y.Z/bin to your
|
||||
path) as described in the Quick Installation section.
|
||||
|
||||
|
||||
Validating checksums:
|
||||
|
||||
The integrity of distributed files can be verified using checksums that are
|
||||
published with released files. Released files and their checksums are
|
||||
available from the GitHub releases page (https://github.com/BRL-CAD/brlcad/releases). If you
|
||||
re-distribute BRL-CAD, checksums should be retained with the files so others
|
||||
can validate origination.
|
||||
|
||||
|
||||
INSTALLING FROM SOURCE
|
||||
----------------------
|
||||
|
||||
There are a couple of ways to obtain the BRL-CAD sources, usually via one of
|
||||
the following starting points:
|
||||
There are a couple of ways to obtain the BRL-CAD sources, usually via
|
||||
one of the following starting points:
|
||||
|
||||
1) from a Git checkout, or
|
||||
1) from a SVN checkout/export, or
|
||||
2) from a source distribution tarball
|
||||
|
||||
Using the latest Git sources is recommended where possible since it
|
||||
will have the latest changes.
|
||||
Using the latest SVN sources is recommended where possible since it
|
||||
will have the latest changes. See the corresponding section below for
|
||||
details on how to install from either starting point.
|
||||
|
||||
|
||||
Starting From a SVN Checkout/Export:
|
||||
|
||||
With CMake, there is no longer any difference between building from
|
||||
a subversion checkout and a tarball--follow the Source Distribution
|
||||
instructions below.
|
||||
|
||||
Starting From a Source Distribution:
|
||||
|
||||
There are many different ways to build BRL-CAD and depending on what
|
||||
you need/want will determine which configuration options you should
|
||||
use. See the CONFIGURATION OPTIONS section below for details on how
|
||||
to go about selecting which options are appropriate for you.
|
||||
|
||||
BRL-CAD's dependencies are managed in a separate repository, located at
|
||||
https://github.com/BRL-CAD/bext By default BRL-CAD's configure process will
|
||||
download and manage the necessary dependencies, avoiding the need for user
|
||||
awareness of the bext repository, but there are a number of scenarios where it
|
||||
is advantageous for developers to adjust how this process works.
|
||||
|
||||
The full dependency stack of BRL-CAD, with all optional and experimental
|
||||
features enabled, is a VERY large and long compile. Therefore, the bext build
|
||||
outputs can be built as their own separate, external project to allow for reuse
|
||||
of the compiled outputs. Building bext separately means BRL-CAD won't get a
|
||||
chance to customize what is and is not built, but the trade-off is that outputs
|
||||
can be built once and reused over and over. Doing so can significantly shorten
|
||||
time spent configuring BRL-CAD builds - reusing bext compiled outputs is
|
||||
recommended for serious developers.
|
||||
|
||||
Various useful configurations for working with bext:
|
||||
|
||||
* Get a git clone that has everything which might be needed (large,
|
||||
but useful for offline building)
|
||||
|
||||
git clone --recurse-submodules https://github.com/BRL-CAD/brlcad
|
||||
|
||||
* Have prebuilt bext outputs to reuse - BRL-CAD will simply copy and prepare
|
||||
the pre-existing files
|
||||
|
||||
cmake .. -DBRLCAD_EXT_DIR=/home/user/bext_output
|
||||
|
||||
* Already have an existing bext clone but want BRL-CAD to build bext outputs
|
||||
|
||||
cmake .. -DBRLCAD_EXT_SOURCE_DIR=/home/user/bext
|
||||
|
||||
* Download, build and bundle only what is needed for librt
|
||||
|
||||
cmake .. -DBRLCAD_COMPONENTS=librt
|
||||
|
||||
* Build and bundle only what is needed, but don't require internet for bext clone
|
||||
cmake .. -DBRLCAD_EXT_SOURCE_DIR=/home/user/bext -DBRLCAD_COMPONENTS=librt
|
||||
|
||||
|
||||
By default, the build system will prepare a Debug build and install into the
|
||||
/usr/brlcad/dev-X.Y.Z directory. The CMAKE_INSTALL_PREFIX option may be used
|
||||
to change that directory, or a Release build type may be specified to install
|
||||
to /usr/brlcad/rel-X.Y.Z - more on this below. The tradition of non-system
|
||||
installation paths goes back a couple of decades and is a convenient means to
|
||||
isolate the BRL-CAD solid modeling system from your system, resolves conflicts,
|
||||
facilitates uninstalls, and simplifies upgrades. The default configuration is
|
||||
performed by running `cmake'. It is not required to do the build in a
|
||||
directory different from your source directory, but it is much cleaner and
|
||||
*highly* recommended - this guide will illustrate the build process with the
|
||||
assumption that the BRL-CAD source code is in the directory brlcad-X.Y.Z and
|
||||
the directory intended to hold the build output is brlcad-build, located in the
|
||||
same parent directory as brlcad-X.Y.Z:
|
||||
By default, the default configuration will prepare the build system
|
||||
to perform a Debug build and install into the /usr/brlcad/dev-X.Y.Z
|
||||
directory. The CMAKE_INSTALL_PREFIX option may be used to change
|
||||
that directory, or a Release build type may be specified to install to
|
||||
/usr/brlcad/rel-X.Y.Z - more on this below. The
|
||||
tradition of non-system installation paths goes back a couple of decades
|
||||
and is a convenient means to isolate the BRL-CAD solid modeling
|
||||
system from your system, resolves conflicts, facilitates uninstalls,
|
||||
and simplifies upgrades. The default configuration is performed by
|
||||
running `cmake'. It is not required to do the build in a directory
|
||||
different from your source directory, but it is much cleaner and
|
||||
*highly* recommended - this guide will illustrate the build process
|
||||
with the assumption that the BRL-CAD source code is in the directory
|
||||
brlcad-7.2.4 and the directory intended to hold the build output is
|
||||
brlcad-build, located in the same parent directory as brlcad-7.2.4:
|
||||
|
||||
.
|
||||
./brlcad-X.Y.Z
|
||||
./brlcad-7.2.4
|
||||
./brlcad-build
|
||||
|
||||
To start the build process, cd into brlcad-build and run CMake,
|
||||
pointing it to the source directory:
|
||||
|
||||
cd brlcad-build
|
||||
cmake ../brlcad-X.Y.Z
|
||||
cmake ../brlcad-7.2.4
|
||||
|
||||
As mentioned earlier, CMake uses two "build types", controlled by
|
||||
the CMAKE_BUILD_TYPE variable, that are useful for specific purposes:
|
||||
@@ -220,14 +207,35 @@ override the ../brlcad-install default. Build types are a convenient way
|
||||
to bundle sets of settings, but they do not prevent overrides if a more
|
||||
custom setup is needed.
|
||||
|
||||
By default, all components and functionality will be built.
|
||||
Note that BRL-CAD does require and include several 3rd party
|
||||
components. If your system does not include a sufficient version of
|
||||
those required 3rd party components, they will be automatically
|
||||
configured for compilation.
|
||||
|
||||
If the autodetection mechanisms fail to produce a working configuration,
|
||||
the next simplest approach is typically to enable ALL the third party
|
||||
components - this is typically a well tested configuration, but will
|
||||
increase both the build time and final install size of BRL-CAD on
|
||||
the system. To set this variable on the command line, use -D to
|
||||
define ENABLE_ALL for CMake:
|
||||
define BRLCAD_BUNDLED_LIBS for CMake:
|
||||
|
||||
-DENABLE_ALL=ON
|
||||
-DBRLCAD_BUNDLED_LIBS=Bundled
|
||||
|
||||
If the graphical interface (cmake-gui) is in use, it will list this
|
||||
and other common options by default, allowing the user change them
|
||||
graphically. This is often quicker and more convenient than
|
||||
defining options on the command line, but both will work.
|
||||
|
||||
You can also force on or off any individual 3rd party library by
|
||||
setting the BRL-CAD variable for that feature to either on or off:
|
||||
|
||||
-DBRLCAD_<LIBRARY>=ON
|
||||
|
||||
Other variables control BRL-CAD features. For example, to NOT
|
||||
enable functionality using OpenGL, set
|
||||
|
||||
-DBRLCAD_ENABLE_OPENGL=OFF
|
||||
|
||||
To obtain an optimized build (for example, for BRL-CAD Benchmark
|
||||
performance evaluation), enable BRLCAD_FLAGS_OPTIMIZATION:
|
||||
@@ -237,6 +245,23 @@ performance evaluation), enable BRLCAD_FLAGS_OPTIMIZATION:
|
||||
See the CONFIGURATION OPTIONS below for more details on all of the
|
||||
possible settings.
|
||||
|
||||
You can specify options or preferences you want to always use by
|
||||
default. For example, to always enable all local libs the following
|
||||
line can be added to your own configuration file:
|
||||
|
||||
set(BRLCAD_BUNDLED_LIBS "Bundled" CACHE STRING "Enable all local libs")
|
||||
|
||||
You can define your own configuration file in one of three ways. The
|
||||
build system will search for the file in this order:
|
||||
|
||||
${BRLCAD_SOURCE_DIR}/../BRL-CAD_CONFIG.GLOBAL
|
||||
|
||||
${BRLCAD_SOURCE_DIR}/BRL-CAD_CONFIG.GLOBAL
|
||||
|
||||
the file defined in the environment variable "BRLCAD_USER_GLOBAL_CONFIG_FILE"
|
||||
|
||||
The build system will use the first file defined that exists.
|
||||
|
||||
Once configured, you should be able to successfully build BRL-CAD via
|
||||
make:
|
||||
|
||||
@@ -262,31 +287,19 @@ or on operating systems set up to use sudo:
|
||||
TESTING FUNCTIONALITY
|
||||
---------------------
|
||||
|
||||
The primary build target to validate a compilation of BRL-CAD is:
|
||||
|
||||
make check
|
||||
|
||||
That runs a trio of test sets including "benchmark", "regress", and
|
||||
"unit". The first set is a performance test that also validates
|
||||
whether ray tracing behavior is correct:
|
||||
To test BRL-CAD before installation, you can run the BRL-CAD benchmark.
|
||||
The benchmark will report if the results are correct, testing a
|
||||
majority of the core functionality of BRL-CAD in addition to testing
|
||||
your system's performance:
|
||||
|
||||
make benchmark
|
||||
|
||||
The second test set is our regression tests that run a host of
|
||||
rigorous integration tests and validate essential behavior:
|
||||
Note that the benchmark target will build ONLY the pieces required for
|
||||
the benchmark tests, unless a general make has already been performed.
|
||||
For more testing, you can run the regression test suite:
|
||||
|
||||
make regress
|
||||
|
||||
The third set runs unit tests that validate low-level behavior in
|
||||
BRL-CAD's core libraries:
|
||||
|
||||
make unit
|
||||
|
||||
Last but not least, one may simply run all available tests, though
|
||||
note that some tests will intentionally fail:
|
||||
|
||||
make test
|
||||
|
||||
|
||||
POST-INSTALLATION
|
||||
-----------------
|
||||
@@ -310,35 +323,38 @@ files.
|
||||
System PATH:
|
||||
|
||||
Normally, BRL-CAD's install directories are not in system PATH lists and
|
||||
consequently BRL-CAD's executables will not be invocable without specifying
|
||||
consequently BRL-CAD's executables will not be invokable without specifying
|
||||
their full path. This is normally handled in Unix environments by adding
|
||||
the desired BRL-CAD installation's binary directory to the user's local path:
|
||||
|
||||
On Windows, the PATH system variable can be set using System Utility
|
||||
in control panel. Add the bin/ folder in the install directory to PATH.
|
||||
|
||||
On Linux/BSD/other systems:
|
||||
In the bash shell: export PATH=/usr/brlcad/rel-X.Y.Z:$PATH
|
||||
In the csh shell: setenv PATH /usr/brlcad/rel-X.Y.Z:$PATH
|
||||
|
||||
In the bash shell: export PATH=/usr/brlcad/rel-X.Y.Z:$PATH
|
||||
In the csh shell: setenv PATH /usr/brlcad/rel-X.Y.Z:$PATH
|
||||
|
||||
REPORTING PROBLEMS
|
||||
------------------
|
||||
|
||||
Please report any bugs, support requests, or feature requests to:
|
||||
https://github.com/BRL-CAD/brlcad/issues
|
||||
Please report any bugs encountered to the project bug tracker at
|
||||
http://sourceforge.net/tracker/?group_id=105292&atid=640802
|
||||
|
||||
Similarly, please post any request for feature enhancements or support
|
||||
to http://sourceforge.net/tracker/?group_id=105292&atid=640805 and
|
||||
http://sourceforge.net/tracker/?group_id=105292&atid=640803
|
||||
respectively.
|
||||
|
||||
|
||||
CONFIGURATION OPTIONS
|
||||
---------------------
|
||||
|
||||
--- ENABLE_ALL ---
|
||||
--- BRLCAD_BUNDLED_LIBS ---
|
||||
|
||||
If set to ON, and the BRL-CAD configure process is managing the bext
|
||||
dependencies, instructs bext to default to building local copies of the
|
||||
dependencies it will enable per the BRL-CAD feature settings, rather than
|
||||
searching for system versions.
|
||||
Enables compilation of all 3rd party sources that are provided within a BRL-CAD
|
||||
source distribution. If used this option sets all other 3rd party library
|
||||
build flags to ON by default. However, that setting can be overridden by
|
||||
manually setting individual variables. Default is "AUTO" - 3rd party sources
|
||||
are compiled only if they are not detected as being available and functioning
|
||||
as expected.
|
||||
|
||||
Aliases: ENABLE_ALL
|
||||
|
||||
|
||||
--- BRLCAD_ENABLE_OPENGL ---
|
||||
@@ -350,41 +366,6 @@ if it is, default is to enable.
|
||||
Aliases: ENABLE_OPENGL
|
||||
|
||||
|
||||
--- BRLCAD_X11_PROVIDER ---
|
||||
|
||||
Selects the X11 implementation used by BRL-CAD, Tk, Qt, and OpenGL. Accepted
|
||||
values are AUTO, SYSTEM, and XMIN. AUTO is the default and deliberately
|
||||
resolves to SYSTEM so installing Xmin cannot change an existing build.
|
||||
|
||||
XMIN selects an installed Xmin client SDK for deterministic GUI testing
|
||||
without a host X server. The SDK must provide Xmin::ToolkitX11; OpenGL builds
|
||||
also need Xmin::GL. Set Xmin_ROOT to the SDK installation prefix. Tk and Qt
|
||||
must be built for the same provider because their public X11 APIs conceal
|
||||
provider-private state; mixing Xmin and system client libraries is not ABI
|
||||
safe and is rejected during configuration.
|
||||
|
||||
When BRL-CAD manages bext, it derives the matching bext SDK prefix from the
|
||||
selected Xmin package. Bext then applies its version-matched Tk and Qt patches
|
||||
automatically to whichever bundled toolkits are selected. No external patch
|
||||
paths are needed.
|
||||
|
||||
A typical Xmin configuration is:
|
||||
|
||||
cmake .. -DBRLCAD_X11_PROVIDER=XMIN \
|
||||
-DXmin_ROOT=/path/to/xmin-prefix
|
||||
|
||||
Bext retains advanced TK_EXTRA_PATCHES, TK_CONFIGURE_ARGS, QT_EXTRA_PATCHES,
|
||||
and QT_XMIN_ROOT controls for custom profiles. The standard BRL-CAD Xmin
|
||||
configuration does not need them. Refer to bext's Xmin profile documentation
|
||||
before changing the bundled Tk or Qt revision.
|
||||
|
||||
|
||||
--- BRLCAD_COMPONENTS ---
|
||||
|
||||
Semicolon separated list of components to enable for building - see
|
||||
src/source_dirs.cmake for a list of the components that may be specified.
|
||||
|
||||
|
||||
--- BRLCAD_ENABLE_RUNTIME_DEBUG ---
|
||||
|
||||
Enables support for application and library debugging facilities.
|
||||
@@ -398,51 +379,18 @@ Aliases: ENABLE_RUNTIME_DEBUG, ENABLE_RUN_TIME_DEBUG, ENABLE_RUNTIME_DEBUGGING
|
||||
ENABLE_RUN_TIME_DEBUGGING
|
||||
|
||||
|
||||
--- BRLCAD_EXT_DIR ---
|
||||
|
||||
If specified, BRL-CAD will look in this directory for bext compiled outputs to
|
||||
bundle and use during the build.
|
||||
|
||||
|
||||
--- BRLCAD_EXT_SOURCE_DIR ---
|
||||
|
||||
If specified, BRL-CAD will look in this directory for bext source files. Use
|
||||
this when you have a pre-existing bext clone and don't want BRL-CAD's configure
|
||||
process to pull down another copy, but are still looking to have the BRL-CAD
|
||||
configure process manage producing bext build outputs.
|
||||
|
||||
|
||||
--- BRLCAD_EXT_PARALLEL ---
|
||||
|
||||
This number, when specified, describes how many compilation threads to use
|
||||
when compiling bext sources. Default is 8.
|
||||
|
||||
|
||||
--- BRLCAD_DEBUGGING ---
|
||||
--- BRLCAD_FLAGS_DEBUG ---
|
||||
|
||||
Add compiler flags to aid in program debugging. Defaults to ON.
|
||||
|
||||
Aliases: ENABLE_DEBUG, ENABLE_FLAGS_DEBUG, ENABLE_DEBUG_FLAGS
|
||||
BRLCAD_FLAGS_DEBUG
|
||||
|
||||
|
||||
--- BRLCAD_PGO ---
|
||||
--- BRLCAD_ENABLE_COMPILER_WARNINGS ---
|
||||
|
||||
Enable profile-guided optimization build flags. Defaults to OFF.
|
||||
|
||||
Profile-guided optimization builds are possible via two-pass
|
||||
compilation. Compile with this flag set, run the benchmark suite,
|
||||
clean the build, and then compile again with this flag set. Supported
|
||||
compilers will utilize data from the first pass to guide optimization,
|
||||
typically resulting in a significant performance increase:
|
||||
|
||||
|
||||
--- BRLCAD_WARNINGS ---
|
||||
|
||||
Use extra warning flags when compiling C/C++ code. Defaults to ON.
|
||||
Use extra compiler warning flags when compiling C/C++ code. Defaults to ON.
|
||||
|
||||
Aliases: ENABLE_WARNINGS, ENABLE_COMPILER_WARNINGS
|
||||
BRLCAD_ENABLE_COMPILER_WARNINGS
|
||||
|
||||
|
||||
--- BRLCAD_ENABLE_STRICT ---
|
||||
@@ -467,10 +415,333 @@ Aliases: ENABLE_ALL_CXX
|
||||
--- BRLCAD_EXTRADOCS ---
|
||||
|
||||
The core option that enables and disables building of BRL-CAD's
|
||||
AsciiDoc based documentation (includes manuals and man pages for
|
||||
commands, among other things). It is built with BRL-CAD's bundled
|
||||
asciiquack processor into HTML and man-page (troff) formats. Defaults
|
||||
to ON for a full build and OFF for reduced target sets.
|
||||
DocBook based documentation (includes manuals and man pages for
|
||||
commands, among other things). Defaults to ON, but only HTML and MAN
|
||||
formats are enabled by default - PDF must be enabled separately by use
|
||||
of this option or one of its aliases. Note that you may set
|
||||
environment variable APACHE_FOP to point to your locally installed fop
|
||||
executable file (which on Linux is usually a shell script with 0755
|
||||
permissions).
|
||||
|
||||
Aliases: ENABLE_DOCS, ENABLE_EXTRA_DOCS
|
||||
Aliases: ENABLE_DOCS, ENABLE_EXTRA_DOCS, ENABLE_DOCBOOK
|
||||
|
||||
|
||||
--- BRLCAD_LEMON ---
|
||||
|
||||
Option for enabling and disabling compilation of the lemon parser
|
||||
provided with BRL-CAD's source distribution. Default is AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_LEMON
|
||||
|
||||
|
||||
--- BRLCAD_RE2C ---
|
||||
|
||||
Option for enabling and disabling compilation of the re2c scanner
|
||||
utility provided with BRL-CAD's source distribution. Default is AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_RE2C
|
||||
|
||||
|
||||
--- BRLCAD_PERPLEX ---
|
||||
|
||||
Option for enabling and disabling compilation of the perplex scanner
|
||||
generator provided with BRL-CAD's source distribution. Default is
|
||||
AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO. perplex requires a working re2c.
|
||||
|
||||
Aliases: ENABLE_PERPLEX
|
||||
|
||||
|
||||
--- BRLCAD_ASTYLE ---
|
||||
|
||||
Option for enabling and disabling compilation of the Artistic Style
|
||||
(astyle) utility provided with BRL-CAD's source distribution. Default is
|
||||
AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_ASTYLE
|
||||
|
||||
|
||||
--- BRLCAD_XSLTPROC ---
|
||||
|
||||
Option for enabling and disabling compilation of the xsltproc XML
|
||||
transformation utility provided with BRL-CAD's source distribution.
|
||||
Used for DocBook documentation processing. Default is AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
Depends on BRLCAD_EXTRADOCS.
|
||||
|
||||
Aliases: ENABLE_XSLTPROC
|
||||
|
||||
|
||||
--- BRLCAD_XMLLINT ---
|
||||
|
||||
Option for enabling and disabling compilation of the xmllint XML
|
||||
validation utility provided with BRL-CAD's source distribution. Used
|
||||
for DocBook documentation validation. Default is AUTO, responsive to
|
||||
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
|
||||
version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_XMLLINT
|
||||
|
||||
|
||||
--- BRLCAD_REGEX ---
|
||||
|
||||
Option for enabling and disabling compilation of the Regular
|
||||
Expression Library provided with BRL-CAD's source distribution.
|
||||
Default is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option
|
||||
and testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_REGEX
|
||||
|
||||
|
||||
--- BRLCAD_ZLIB ---
|
||||
|
||||
Option for enabling and disabling compilation of the zlib library
|
||||
provided with BRL-CAD's source distribution. Default is AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_ZLIB, ENABLE_LIBZ
|
||||
|
||||
|
||||
--- BRLCAD_LZ4 ---
|
||||
|
||||
Option for enabling and disabling compilation of the lz4 data
|
||||
compression library provided with BRL-CAD's source code. Default
|
||||
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_LZ4
|
||||
|
||||
|
||||
--- BRLCAD_FREETYPE ---
|
||||
|
||||
Option for enabling and disabling compilation of the FreeType
|
||||
libraries provided with BRL-CAD's source code. Default is AUTO, responsive to
|
||||
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
|
||||
version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_FREETYPE
|
||||
|
||||
|
||||
--- BRLCAD_NETPBM ---
|
||||
|
||||
Option for enabling and disabling compilation of the netpbm library
|
||||
provided with BRL-CAD's source code. Default is AUTO, responsive to
|
||||
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
|
||||
version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_NETPBM
|
||||
|
||||
|
||||
--- BRLCAD_PNG ---
|
||||
|
||||
Option for enabling and disabling compilation of the Portable Network
|
||||
Graphics library provided with BRL-CAD's source distribution. Default
|
||||
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_PNG
|
||||
|
||||
|
||||
--- BRLCAD_UTAHRLE ---
|
||||
|
||||
Option for enabling and disabling compilation of the Utah Raster
|
||||
Toolkit library provided with BRL-CAD's source code. Default is AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_UTAHRLE
|
||||
|
||||
|
||||
--- BRLCAD_TCL ---
|
||||
|
||||
Option for enabling and disabling compilation of the Tcl library
|
||||
provided with BRL-CAD's source code. Default is AUTO, responsive to
|
||||
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
|
||||
version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_TCL
|
||||
|
||||
|
||||
--- BRLCAD_TK ---
|
||||
|
||||
Option for enabling and disabling compilation of the Tk library
|
||||
provided with BRL-CAD's source code. Default is AUTO, responsive to
|
||||
the BRLCAD_TCL option and testing first for a system version if
|
||||
BRLCAD_BUNDLED_LIBS is also AUTO. Option for enabling and disabling
|
||||
compilation of the Tk graphics package for Tcl provided with BRL-CAD's
|
||||
source distribution. Default is AUTO, auto-enabling if the BRLCAD_TCL
|
||||
option is set to BUNDLED and testing first for a system version if
|
||||
BRLCAD_TCL is set to AUTO or SYSTEM. If BRLCAD_TK is set to BUNDLED,
|
||||
local copy is built even if a system version is present. This option
|
||||
also depends on BRLCAD_ENABLE_TK being ON.
|
||||
|
||||
Aliases: ENABLE_TK
|
||||
|
||||
|
||||
--- BRLCAD_ITCL ---
|
||||
|
||||
Option for enabling and disabling compilation of the IncrTcl package
|
||||
for Tcl objects provided with BRL-CAD's source distribution. Default
|
||||
is AUTO, auto-enabling if the BRLCAD_TCL option is set to BUNDLED and
|
||||
testing first for a system version if BRLCAD_TCL is set to AUTO or
|
||||
SYSTEM. If BRLCAD_ITCL is set to BUNDLED, local copy is built even if
|
||||
a system version is present.
|
||||
|
||||
Aliases: ENABLE_ITCL
|
||||
|
||||
|
||||
--- BRLCAD_ITK ---
|
||||
|
||||
Option for enabling and disabling compilation of the IncrTcl itk
|
||||
package for Tk objects provided with BRL-CAD's source distribution.
|
||||
Default is AUTO, auto-enabling if the BRLCAD_TCL option is set to
|
||||
BUNDLED and testing first for a system version if BRLCAD_TCL is set to
|
||||
AUTO or SYSTEM. If BRLCAD_ITK is set to BUNDLED, local copy is built
|
||||
even if a system version is present. This package will be disabled if
|
||||
BRLCAD_ENABLE_TK is OFF.
|
||||
|
||||
Aliases: ENABLE_ITK
|
||||
|
||||
|
||||
--- BRLCAD_IWIDGETS ---
|
||||
|
||||
Option for enabling and disabling compilation of the IWidgets Tk
|
||||
widget package provided with BRL-CAD's source distribution. Default
|
||||
is AUTO, auto-enabling if the BRLCAD_TCL option is set to BUNDLED and
|
||||
testing first for a system version if BRLCAD_TCL is set to AUTO or
|
||||
SYSTEM. If BRLCAD_IWIDGETS is set to BUNDLED, local copy is built even if
|
||||
a system version is present. This package will be disabled if
|
||||
BRLCAD_ENABLE_TK is OFF.
|
||||
|
||||
Aliases: ENABLE_IWIDGETS
|
||||
|
||||
|
||||
--- BRLCAD_TKHTML ---
|
||||
|
||||
Option for enabling and disabling compilation of the Tkhtml HTML
|
||||
viewing package provided with BRL-CAD's source distribution. Default
|
||||
is AUTO, auto-enabling if the BRLCAD_TCL option is set to BUNDLED and
|
||||
testing first for a system version if BRLCAD_TCL is set to AUTO or
|
||||
SYSTEM. If BRLCAD_TKHTML is set to BUNDLED, local copy is built even if
|
||||
a system version is present. This package will be disabled if
|
||||
BRLCAD_ENABLE_TK is OFF.
|
||||
|
||||
Aliases: ENABLE_TKHTML
|
||||
|
||||
|
||||
--- BRLCAD_TKTABLE ---
|
||||
|
||||
Option for enabling and disabling compilation of the Tktable graphical
|
||||
table widget package provided with BRL-CAD's source distribution.
|
||||
Default is AUTO, auto-enabling if the BRLCAD_TCL option is set to
|
||||
BUNDLED and testing first for a system version if BRLCAD_TCL is set to
|
||||
AUTO or SYSTEM. If BRLCAD_TKTABLE is set to BUNDLED, local copy is built
|
||||
even if a system version is present. This package will be disabled if
|
||||
BRLCAD_ENABLE_TK is OFF.
|
||||
|
||||
Aliases: ENABLE_TKTABLE
|
||||
|
||||
|
||||
--- BRLCAD_OPENNURBS ---
|
||||
|
||||
Option for enabling and disabling compilation of the openNURBS library
|
||||
provided with BRL-CAD's source code. Default is AUTO, responsive to
|
||||
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
|
||||
version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_OPENNURBS
|
||||
|
||||
|
||||
--- BRLCAD_SPSR ---
|
||||
|
||||
Option for enabling and disabling compilation of the Screened Poisson
|
||||
Surface Reconstruction library provided with BRL-CAD's source code.
|
||||
Default is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option
|
||||
and testing first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_SPSR
|
||||
|
||||
|
||||
--- BRLCAD_SC ---
|
||||
|
||||
Option for enabling and disabling compilation of the NIST Step Class
|
||||
Libraries provided with BRL-CAD's source code. Default is AUTO,
|
||||
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
|
||||
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_SCL, ENABLE_STEP, ENABLE_STEP_CLASS_LIBRARIES
|
||||
|
||||
|
||||
--- BRLCAD_VDS ---
|
||||
|
||||
Option for enabling and disabling compilation of the libvds triangle
|
||||
simplification library provided with BRL-CAD's source code. Default
|
||||
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_VDS
|
||||
|
||||
|
||||
--- BRLCAD_OSG ---
|
||||
|
||||
Option for enabling and disabling compilation of the OpenSceneGraph
|
||||
libraries provided with BRL-CAD's source code. Default is AUTO, responsive to
|
||||
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
|
||||
version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
|
||||
Aliases: ENABLE_OPENSCENEGRAPH
|
||||
|
||||
|
||||
--- BRLCAD_GDIAM ---
|
||||
|
||||
Option for enabling and disabling compilation of the libgdiam approximate
|
||||
tight bounding box library provided with BRL-CAD's source code. Default
|
||||
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_GDIAM
|
||||
|
||||
|
||||
--- BRLCAD_PROJ4 ---
|
||||
|
||||
Option for enabling and disabling compilation of the PROJ.4 geographic
|
||||
projection library provided with BRL-CAD's source code. Default
|
||||
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_PROJ4
|
||||
|
||||
|
||||
--- BRLCAD_GDAL ---
|
||||
|
||||
Option for enabling and disabling compilation of the GDAL geographic
|
||||
library provided with BRL-CAD's source code. Default
|
||||
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
|
||||
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
|
||||
AUTO.
|
||||
|
||||
Aliases: ENABLE_GDAL
|
||||
|
||||
|
||||
|
||||
*** Note - Do not add or edit configuration option descriptions and alias
|
||||
lists in this file - those entries are auto-generated from information in
|
||||
the toplevel CMakeLists.txt file and src/other/CMakeLists.txt - any changes
|
||||
should be made in those files. The CMake configuration process will
|
||||
automatically re-generate INSTALL with the new descriptions and alias
|
||||
information.
|
||||
|
||||
-3677
File diff suppressed because it is too large
Load Diff
@@ -9,864 +9,30 @@ first and are grouped by release. Each release also includes optional
|
||||
descriptive text that emphasizes or further describes significant
|
||||
changes made. See document footer for additional details.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 20XX-XX-XX Release 7.46.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* updated MGED and Archer for Tcl 8.6.18 and Itcl/Itk 4 - Cliff Yapp
|
||||
* fixed writes to fileless geometry databases - Cliff Yapp
|
||||
* fixed nastran-g handling of large property IDs - Rupesh, Cliff Yapp
|
||||
* fixed dxf-g invalid polyface index crashes - Meghna45-code, Cliff Yapp
|
||||
* fixed Archer primitive editors under Itcl 4 - Cliff Yapp
|
||||
* fixed Archer shutdown menu cleanup errors - Cliff Yapp
|
||||
* fixed MGED Build Pattern dialog under Itcl 4 - Cliff Yapp
|
||||
* fixed TclCAD framebuffer listing and deletion - Cliff Yapp
|
||||
* fixed MGED Build Pattern progress updates - Cliff Yapp
|
||||
* fixed MGED search -exec reentry and Ctrl-C crashes - Cliff Yapp
|
||||
* fixed MGED asynchronous commands and clone progress - Cliff Yapp
|
||||
* accelerated large and repeated MGED path drawing - Cliff Yapp
|
||||
* fixed ARB7 inside solid construction - Cliff Yapp
|
||||
* fixed direct ARB face and edge-direction editing - Cliff Yapp
|
||||
* fixed rtwizard startup with framebuffer contention - Cliff Yapp
|
||||
* fixed Archer annotation line display updates - Cliff Yapp
|
||||
* fixed Archer sketch scale drift in non-mm databases - Cliff Yapp
|
||||
* fixed toggle arrow callbacks during setup - Cliff Yapp
|
||||
* fixed Tcl dialogs with multi-word titles and messages - Cliff Yapp
|
||||
* fixed Archer Tank Wizard gun generation - Cliff Yapp
|
||||
* fixed MGED and Archer sketch arc tangency editing - Cliff Yapp
|
||||
* fixed Archer ARB4 point 3 editing - Cliff Yapp
|
||||
* fixed ARB4 storage from make and mk_arb4 - Cliff Yapp
|
||||
* fixed ARB4 and ARB6 center point calculations - Cliff Yapp
|
||||
* fixed concurrent MGED and rtwizard framebuffer use - Cliff Yapp
|
||||
* fixed MGED ShotVis editing and reload failures - Cliff Yapp
|
||||
* fixed Tcl widget geometry and selection defects - Cliff Yapp
|
||||
* fixed MGED BoT editor property handling - Cliff Yapp
|
||||
* fixed MGED LOD dialog and adaptive BoT wireframes - Cliff Yapp
|
||||
* fixed MGED Plot, PostScript, and manual launch tools - Cliff Yapp
|
||||
* fixed MGED Overlap Tool multi-object result handling - Cliff Yapp
|
||||
* eliminated 16-fold redundant gchecker grid analysis - Cliff Yapp
|
||||
* fixed Archer tree handling for object names with spaces - Cliff Yapp
|
||||
* fixed RtWizard multi-object edge occlusion handling - Cliff Yapp
|
||||
* fixed RtWizard title, About, and preference handling - Cliff Yapp
|
||||
* fixed MGED startup file false legacy-syntax warnings - Cliff Yapp
|
||||
* fixed MGED saved-view deletion and collaboration sync - Cliff Yapp
|
||||
* fixed MGED font preferences apply and persistence - Cliff Yapp
|
||||
* fixed Archer combination edits changing Boolean trees - Cliff Yapp
|
||||
* fixed Archer command-line help startup crash - Cliff Yapp
|
||||
* fixed MGED Geometry Browser menu and close behavior - Cliff Yapp
|
||||
* fixed MGED collaboration view unshare crash - Cliff Yapp
|
||||
* added an override for Archer's preference file location - Cliff Yapp
|
||||
* fixed embedded Archer display and mode menus - Cliff Yapp
|
||||
* added Archer -h and --help command-line options - Cliff Yapp
|
||||
* fixed Archer Help opening the documentation menu - Sean Morrison
|
||||
* added arrange nest command for packing database objects - Sean Morrison
|
||||
* new mkbuilding tool for parametric/OSM/CityJSON models - Sean Morrison
|
||||
* cross-platform BINUNIF and DSP byte-order handling - Sean Morrison
|
||||
* improved several cv default behaviors (s, 32, 64, n) - Sean Morrison
|
||||
* fixed invalid bot handling bug applying matrices - Sean Morrison
|
||||
* improved glTF import robustness via gcv - Sean Morrison
|
||||
* fixed bot dump glTF/GLB export; -F is now rejected - Cliff Yapp
|
||||
* faster NMG solid ray tracing (10-20x faster) - Sean Morrison
|
||||
* preserved primitive colors in shaded BoT and B-Rep drawing - Cliff Yapp
|
||||
* preserved B-Rep attributes through in-place geometry edits - Cliff Yapp
|
||||
* fixed gcv filter arguments containing one-character values - Cliff Yapp
|
||||
* improved iges-g importer robustness - Cliff Yapp
|
||||
* expanded g-iges native CSG and B-Rep export support - Cliff Yapp
|
||||
* added IGES import and export support to gcv - Cliff Yapp
|
||||
* rt -b query option now supports a single value index - Sean Morrison
|
||||
* fixed .dpix file format portability and icv support - Sean Morrison
|
||||
* expanded pixscale support for piped image data - Sean Morrison
|
||||
* fixed HYP volume and ARBN totals reported by analyze - Cliff Yapp
|
||||
* corrected rtarea sampling and exposed-area calculations - Cliff Yapp
|
||||
* bot split now groups results and preserves mesh data - Cliff Yapp
|
||||
* bot decimate now preserves normals, UVs, and plate data - Cliff Yapp
|
||||
* added raytracing support for annotation objects - Cliff Yapp
|
||||
* fixed MGED X embedded framebuffer display manager crash - Cliff Yapp
|
||||
* added annotate command for managing annotation objects - Cliff Yapp
|
||||
* added repair command for supported invalid primitives - Cliff Yapp
|
||||
* changed default new-region material code from 1 to 0 - Keith Bowman
|
||||
* added comb support to bb -o oriented bounding boxes - Cliff Yapp
|
||||
* added -t tight bounding box option to bb command - Cliff Yapp
|
||||
* added az (-a) and el (-e) option implementations to gqa - Cliff Yapp
|
||||
* added center command support for centering on an object - Cliff Yapp
|
||||
* greatly expanded JT import and added basic JT export - Sean Morrison
|
||||
* added csg-g/g-scad OpenSCAD CSG importer/exporter - Erik Greenwald
|
||||
* improved art light, color, output, & region handling - Sean Morrison
|
||||
* added preliminary OpenSCAD import support - Sean Morrison
|
||||
* expanded IGES BREP/NURBS import and export support - Sean Morrison
|
||||
* expanded STEP AP203 import support with faceted BREP - Sean Morrison
|
||||
* added STEP AP203e2, AP214, and AP242 import/export - Cliff Yapp
|
||||
* added STEP CSG round trips and AP242 PMI import - Cliff Yapp
|
||||
* improved STEP assembly, topology repair, and reporting - Cliff Yapp
|
||||
* new adrt CLI utility with path, spall, and cut modes - Sean Morrison
|
||||
* new CLI+GUI prototype BRL-CAD application launcher - Sean Morrison
|
||||
* added option validation to image & framebuffer tools - Sean Morrison
|
||||
* added contributor, API, command, & raytracing guides - Sean Morrison
|
||||
* added and updated command and library manual pages - Sean Morrison
|
||||
* added parashot gravity trajectory path generator - Sean Morrison
|
||||
* added metaball point scaling (via metaball_move_pnt) - Sean Morrison
|
||||
* all raytracing apps now report object prep failures - Sean Morrison
|
||||
* improved fast4-g robustness and error reporting - Cliff Yapp
|
||||
* improved robustness of g-vrml plate mode handling - Cliff Yapp
|
||||
* fixed MGED ARB5 point, pipe, and sketch editing - Cliff Yapp
|
||||
* added pnts write -f xyz export option - Chris McGregor
|
||||
* added support for tick drawing on MGED model axis - Cliff Yapp
|
||||
* added naca456 left and paired wing generation - Cliff Yapp
|
||||
* added patch-g -j option, specify object thicknesses - Sean Morrison
|
||||
* fixed fbcolor color ramp bug drawing the last color - Sean Morrison
|
||||
* fixed gist -Q quick preview option - Sean Morrison
|
||||
* rt preserves eye_pt setting in command scripts - Sean Morrison
|
||||
* rt -l8 heat graphs now measure CPU time - Sean Morrison
|
||||
* documented gqa centroid & moments of inertia options - Sean Morrison
|
||||
* pixdiff now calculates pixel differences on bw files - Sean Morrison
|
||||
* fixed bwcrop single-axis crops and pixembed edge fill - Sean Morrison
|
||||
* fixed isize in non-mm databases - Josh Baker
|
||||
* fixed metaball adjust clearing points on errors - Sean Morrison
|
||||
* fixed benchmark+pixcmp correctness validation bug - Sean Morrison
|
||||
* fbhelp writes help to stdout and rest to stderr - Sean Morrison
|
||||
* FB now supports /dev/stdout and /dev/stderr devices - Sean Morrison
|
||||
* fixed mged rt -C + -o background color to file bug - Sean Morrison
|
||||
* fixed rt -C255/0/0 -o file.pix background color bug - Sean Morrison
|
||||
* added rtsil foreground & background -c set options - Sean Morrison
|
||||
* added rtsil -o support for bw output - Sean Morrison
|
||||
* added cutting plane animation generation to rtwizard - Cliff Yapp
|
||||
* fixed pixdiff bug on Windows - Sean Morrison
|
||||
* fixed MGED startup window placement on Windows - Chris McGregor
|
||||
* fixed pixborder utility right-side edge bug - Sean Morrison
|
||||
* fixed 'wavelet' image processing tool on Windows - Sean Morrison
|
||||
* quieted mged killtree spurious lookup failure output - Sean Morrison
|
||||
* fixed ray tracing small images to disk framebuffers - Sean Morrison
|
||||
* improved raytracing performance of CSG-heavy regions - Sean Morrison
|
||||
* fixed OBJ conversion bug importing unnamed groups - Sean Morrison
|
||||
* fixed k-g conversion of BoT vertex normals - laithaldaeef
|
||||
* new doc guide, a visual overview of BRL-CAD objects - Sean Morrison
|
||||
* improved triangle quality produced by bot remesh - Cliff Yapp
|
||||
* updated numerous manpage command references - Josh Baker
|
||||
* fixed submodel paths relative to parent databases - Sean Morrison
|
||||
* improved performance making huge combinations - Sean Morrison
|
||||
* added make -t primitive type listing - Chris McGregor
|
||||
* added gcv import conversion support for vrml/wrl 1.0 - Sean Morrison
|
||||
* fixed gcv appending to existing geometry databases - Sean Morrison
|
||||
* added CSS names, hex, HSL/HSV to libbu color parsing - Sean Morrison
|
||||
* improved OpenNURBS B-Rep import and adjustment safety - Cliff Yapp
|
||||
* improved Debian application menus and MIME associations - Jordi Sayol
|
||||
* updated Clipper2 dependency to v1.5.4 - Cliff Yapp
|
||||
* updated Eigen dependency to v5.0.1 - Cliff Yapp
|
||||
* updated GDAL dependency to v3.13.3 - Cliff Yapp
|
||||
* updated GeometricTools dependency to v8.2 - Cliff Yapp
|
||||
* updated Itk dependency to v4.2.7 - Cliff Yapp
|
||||
* updated LMDB dependency to v1.0.1 - Cliff Yapp
|
||||
* updated Manifold dependency to v3.5.3 - Cliff Yapp
|
||||
* updated OpenCV dependency to v5.0.0 - Cliff Yapp
|
||||
* updated OpenNURBS dependency to v8.34.26223.11001 - Cliff Yapp
|
||||
* updated PROJ dependency to v9.8.1 - Cliff Yapp
|
||||
* updated PoissonRecon dependency to v18.75 - Cliff Yapp
|
||||
* updated Tcl/Tk dependency to v8.6.18, using bundled Itcl - Cliff Yapp
|
||||
* updated libjpeg-turbo dependency to v3.2.0 - Cliff Yapp
|
||||
* updated libosmesa dependency to SHA1 bfa90de - Cliff Yapp
|
||||
* updated libpng dependency to v1.6.58 - Cliff Yapp
|
||||
* updated libtiff dependency to v4.7.2 - Cliff Yapp
|
||||
* updated netpbm dependency to v10.86.50 - Cliff Yapp
|
||||
* updated oneTBB dependency to v2023.1.0 - Cliff Yapp
|
||||
* updated pugixml dependency to v1.16 - Cliff Yapp
|
||||
* updated sqlite3 dependency to v3.53.4 - Cliff Yapp
|
||||
* updated stepcode dependency to SHA1 ed686ee1d - Cliff Yapp
|
||||
* updated tinygltf dependency to v3.0.1 - Cliff Yapp
|
||||
* updated zlib dependency to v1.3.2 - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2026-07-23 Release 7.44.0 ---
|
||||
--- 20XX-XX-XX Release 7.XX.X ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
This release expands geometry processing, conversion, and rendering
|
||||
capabilities including a new proximity search 'near' command, ARB
|
||||
repair, BoT exterior extraction, Cauchy-Crofton validation in lint,
|
||||
and more reliable facetization pipeline. Ray tracers now auto-select
|
||||
a default object or report available top-levels when none is named.
|
||||
Rendering advancements include perspective edge rendering, timing heat
|
||||
maps, PNTS ray tracing, and faster opaque and lighting-heavy renders.
|
||||
|
||||
GCV adds preliminary import support for VTK ASCII, X3D BREP/NURBS, and
|
||||
JT import support, while OBJ preserves material colors. Procedural
|
||||
tools now generate shells, gears, lattices, terrain, propellers,
|
||||
wings, trees, and parameterized tires with tread presets.
|
||||
|
||||
MGED gains full-text doc searching and more robust command I/O; gist
|
||||
1-page reports are more informative; and ICV adds richer reporting,
|
||||
animation, comparison, and image metadata features. DocBook
|
||||
documentation was converted to AsciiDoc, adding over 220 manual pages
|
||||
and extensively improving existing docs.
|
||||
|
||||
* fixed search -exec infinite looping with creations - Chris McGregor
|
||||
* fixed NOCOS mode plate mode bot creation - Meghna45-code
|
||||
* fixed search -exec multithreaded output - Cliff Yapp, Chris McGregor
|
||||
* improved as2g importing speed for large inputs - Cliff Yapp
|
||||
* gist pages now include file size in header - Sean Morrison
|
||||
* added preliminary support for mirroring brep objects - Sean Morrison
|
||||
* fixed dbupgrade corruption of RHC entities - Sean Morrison
|
||||
* fixed archer bug opening database named same as cmd - Sean Morrison
|
||||
* fixed mged bug where pasted text captured by prompt - Sean Morrison
|
||||
* added -k/-K manpage full text keyword search options - Sean Morrison
|
||||
* rm ged command now behaves like the system rm, kills objects&paths
|
||||
- Cliff Yapp, Sean Morrison
|
||||
* fixed gqa exactly symmetric volumetric estimates - Sean Morrison
|
||||
* added support to rtedge for perspective renderings - Sean Morrison
|
||||
* rt -l8 rendering time heat graphs - Stephen Kennedy, Sean Morrison
|
||||
* added 'icv anim' for APNG and MJPEG animation files - Clifford Yapp
|
||||
* added BREP/NURBS import support to gcv x3d importer - Sean Morrison
|
||||
* added BRL-CAD Taxonomy article on naming conventions - Sean Morrison
|
||||
* added new documentation on adrt rendering - Sean Morrison
|
||||
* added snail & seashell procedural geometry generator - Sean Morrison
|
||||
* additional 3D geometry model examples - Csanyi Pal, Lee Butler
|
||||
* fixed fbgamma bug specifying three channel values - Sean Morrison
|
||||
* fixed fbgrid -o old grid mode uninitialized data bug - Sean Morrison
|
||||
* added gcv import support for VTK's ascii file format - Sean Morrison
|
||||
* improved ray tracing performance on opaque objects - Sean Morrison
|
||||
* expanded autoview command with support for objects - Sean Morrison
|
||||
* added new rt -c "autoview object1 object2" option - Sean Morrison
|
||||
* killall no longer outputs kill lookup failures - Sean Morrison
|
||||
* added new manual pages for over 30 tools & utilities - Sean Morrison
|
||||
* fixed mged/rt/gui apps on Mac w/ ogl device windows - Sean Morrison
|
||||
* modified gist long title printing to maximally fit - Sean Morrison
|
||||
* fixed gist hierarchy bug with matrix on top subcombs - Sean Morrison
|
||||
* modified gist hierarchy summary to include counts - Sean Morrison
|
||||
* gist hierarchy no longer displays air as black boxes - Sean Morrison
|
||||
* added get/put/adjust/g2asc support for datum objects - Sean Morrison
|
||||
* added gcv & g-obj color .mtl material export support - Sean Morrison
|
||||
* improved DSP raytrace consistency, robustness, & speed - Cliff Yapp
|
||||
* added arb repair command to fix various ARB8 issues - Cliff Yapp
|
||||
* fixed convex hull tolerance handling for thin shapes - Cliff Yapp
|
||||
* fixed vdeck truncating/overflowing long region names - Sean Morrison
|
||||
* fixed rtweight nan centroid for zero-density regions - Sean Morrison
|
||||
* fixed rt -l7 photon mapping-based rendering crashes - Sean Morrison
|
||||
* fixed mged instability/crash after mged help command - Sean Morrison
|
||||
* new mged 'near' command to find proximity objects - Sean Morrison
|
||||
* fixed sketch/view polygon coordinate offsets - Cliff Yapp
|
||||
* added new manual pages for over 110 GED commands - Sean Morrison
|
||||
* improved facetize tolerance and coplanar face handling - Cliff Yapp
|
||||
* added support for alternate plane forms to rt -k option - Cliff Yapp
|
||||
* improved ~85 manual page synopses, docs, & examples - Sean Morrison
|
||||
* fixed bug in gqa material object lookup - Cliff Yapp
|
||||
* fixed bug in rtweight material object lookup - Cliff Yapp
|
||||
* added support for writing out .jpg files to libicv/rt - Cliff Yapp
|
||||
* converted DocBook documentation files to AsciiDoc - Cliff Yapp
|
||||
* added MGED Pattern GUI patterns to clone command - Cliff Yapp
|
||||
* improved performance of search cmd's -above option - Cliff Yapp
|
||||
* added -d depth limit to npush cmd, improved robustness - Cliff Yapp
|
||||
* address race condition with bu_nsemaphores in libbu - Cliff Yapp
|
||||
* fixed potential DSP corner case rendering crash - Cliff Yapp
|
||||
* fixed multithreaded crashing with noise-using shaders - Cliff Yapp
|
||||
* corrected the exposed region count report in rtarea - Cliff Yapp
|
||||
* fixed icv support for RLE image format - Cliff Yapp
|
||||
* added similarity grouping identification mode to gdiff - Cliff Yapp
|
||||
* added preliminary JT mesh import support to gcv - Sean Morrison
|
||||
* improved gcv asc v5 reader to handle brep input - Cliff Yapp
|
||||
* improved DSP primitive's default facetize behavior - Cliff Yapp
|
||||
* fixed gcv appending to existing databases - Sean Morrison
|
||||
* improved NMG->bot conv speed for all triangle case - Cliff Yapp
|
||||
* added SPSR meshing support to the pnts command - Cliff Yapp
|
||||
* rt tools auto-select an object when none is given - Sean Morrison
|
||||
* added metadata-aware image diff & nirt analysis - Cliff Yapp
|
||||
* added basic PNTS point-cloud ray tracing - Sean Morrison
|
||||
* improved nirt behavior in Windows bash consoles - Cliff Yapp
|
||||
* added g2asc/asc2g support for PNTS, DSP, and EBM - Sean Morrison
|
||||
* updated gct mesh decimation dependency to mmesh - Cliff Yapp
|
||||
* added procedural wing, propeller & tree generators - Cliff Yapp
|
||||
* added ISO tire dimensions & named tread presets - Cliff Yapp
|
||||
* added specimen, terrain, & voxelize proc-db tools - Sean Morrison
|
||||
* added gear, helicoil, lattice, loftwing proc-db - Sean Morrison
|
||||
* added authenticated IPC/TLS to fbserv & remrt/rtsrv - Cliff Yapp
|
||||
* improved rtwizard concurrency & remrt on Windows - Cliff Yapp
|
||||
* added simplification control options to bot extrude - Cliff Yapp
|
||||
* added bot exterior subcommand - Cliff Yapp
|
||||
* fixed 'search -type sph' not returning sph's - Chris McGregor
|
||||
* fixed gist crashing with bad/unknown units - Chris McGregor
|
||||
* add gist '-d' to allow user-specified density file - Chris McGregor
|
||||
* added Cauchy-Crofton area/volume & lint validation - Cliff Yapp
|
||||
* updated geogram dependency from v1.9.0 to v1.9.6 - Cliff Yapp
|
||||
* updated Manifold dependency from v2.5.1 to v3.2.1 - Cliff Yapp
|
||||
* updated SPSR dependency from v16.10 to v18.74 - Cliff Yapp
|
||||
* updated Embree dependency from v4.3.2 to v4.4.1 - Sean Morrison
|
||||
* updated ISPC dependency from v1.24.0 to v1.30.0 - Sean Morrison
|
||||
* updated oneTBB dependency from v2021.12.0 to v2023.0.0 - Sean Morrison
|
||||
* updated OSPRay dependency from v3.1.0 to v3.2.0 - Sean Morrison
|
||||
* updated rkcommon dependency from v1.13.0 to v1.15.2 - Sean Morrison
|
||||
* updated LIEF dependency from v0.15.1 to v0.17.6 - Cliff Yapp
|
||||
* updated Qt dependency from v6.10.2 to v6.11.1 - Cliff Yapp
|
||||
* added Bullet dependency v3.27 - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2026-03-13 Release 7.42.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Follow-on patch release to 7.42.0 correcting a couple of corner case
|
||||
BoT raytracing behaviors, incorporating behaviorial fixes for a number
|
||||
of commands, updating dependencies, and various documentation updates.
|
||||
|
||||
* fixed BoT crash when invalid data present - Chris McGregor
|
||||
* updated stepcode to upstream SHA1 74b6fe4 - Cliff Yapp
|
||||
* replaced yedit with brledit as libbu fallback editor - Cliff Yapp
|
||||
* updated libtiff dependency to v4.7.1 - Cliff Yapp
|
||||
* updated OpenCV dependency to v4.13.0 - Cliff Yapp
|
||||
* updated PUGIXML dependency to v1.15 - Cliff Yapp
|
||||
* updated LMDB dependency to v0.9.35 - Cliff Yapp
|
||||
* updated libjpeg-turbo dependency to v3.1.3 - Cliff Yapp
|
||||
* updated sqlite dependency to v3.51.2 - Cliff Yapp
|
||||
* updated assimp dependency to v6.0.4 - Cliff Yapp
|
||||
* updated GDAL dependency to v3.12.1 - Cliff Yapp
|
||||
* updated PROJ dependency to v9.7.1 - Cliff Yapp
|
||||
* updated libpng dependency to v1.6.54 - Cliff Yapp
|
||||
* improved get/adjust/attr help text - Josh Baker
|
||||
* created manpage for 'adjust' command - Josh Baker
|
||||
* improved 'B' manpage options and usage - Josh Baker
|
||||
* improved 'voxelize' manpage usage and examples - Josh Baker
|
||||
* improved 'draw' manpage options and usage - Josh Baker
|
||||
* improved 'get' manpage - Josh Baker
|
||||
* improved 'view' manpage options, usage, and examples - Josh Baker
|
||||
* improved 'gqa' command usage and help text - Josh Baker
|
||||
* corrected various manpage typos and spacing - Josh Baker
|
||||
* fixed open cmd reporting when database not open - Cliff Yapp
|
||||
* updated g2asc to exit if input file == output file - Cliff Yapp
|
||||
* updated asc2g to exit if input file == output file - Cliff Yapp
|
||||
* fixed default file-create behavior of open command - Cliff Yapp
|
||||
* fixed bot -h crash when database not open - Cliff Yapp
|
||||
* fixed libged nirt cmd -c backout option support - Cliff Yapp
|
||||
* fixed bot subcmd help printing - Cliff Yapp
|
||||
* corrected BoT shotline behavior when starting ray pt in mesh
|
||||
- Sean Morrison Chris McGregor Cliff Yapp
|
||||
* fixed gist never returning on some models - Chris McGregor
|
||||
* improved gist weight gathering speed and accuracy - Chris McGregor
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2025-08-11 Release 7.42.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Polygonal BoT ray tracing is now dramatically faster. Integration of
|
||||
a new spatial partition acceleration method (HLBVH) into librt's BoT
|
||||
ray tracing pipeline yields substantial speedups, better multicore
|
||||
scaling, and reduced memory overhead across all BRL-CAD ray tracing of
|
||||
scenes with BoTs. In general, new overall performence is typicaly in
|
||||
the 2-25x range depending on the model, scene, and other factors. The
|
||||
culmination of many efforts, the improvement was verified, validated,
|
||||
and performance tested against numerous real and test models to
|
||||
confirm gains and assert correctness. As a result, users no longer
|
||||
need to tune TIE or ADRT-specific settings as both are fully obsoleted
|
||||
and replaced.
|
||||
|
||||
This release expands Arbitrary Polyhedron support with 8 vertices
|
||||
(i.e., ARB8-only, not ARB7/6/5/4) to include concave definitions.
|
||||
Surfaces must (still) be planar and not self-intersect, but polyhedral
|
||||
edges creating concavities are now supported for ray tracing.
|
||||
|
||||
MGED's nirt command use of .mgedrc qray settings was restored, which
|
||||
affects output styling (e.g., showing/hiding attributes). To restore
|
||||
default behavior, delete .mgedrc in your home directory or remove
|
||||
existing qray settings manually.
|
||||
|
||||
* increased app parallelism ceiling to 4096 threads - Sean Morrison
|
||||
* removed obsolete nirt -T BoT spatial partition option - Cliff Yapp
|
||||
* added support for concave arb8 primitive definitions - Sean Morrison
|
||||
* added example geometry model showcasing all types - Mitchell Roberts
|
||||
* fixed mged crash when switching databases after rt - Sean Morrison
|
||||
* mitigated multithreading contention on >32 core cpus - Sean Morrison
|
||||
* clarified material_name not found warning in rtweight - Cliff Yapp
|
||||
* fixed stat command crash with invalid path specifiers - Cliff Yapp
|
||||
* improved search std attr table in man page - Cliff Yapp
|
||||
* updated MGED nirt man page to reference cmdline version - Cliff Yapp
|
||||
* fixed raytracing crash with empty BoT solid in tree - Cliff Yapp
|
||||
* cleaned up nirt -L format listing output - Cliff Yapp
|
||||
* fixed MGED nirt command's use of .mgedrc qray formats - Cliff Yapp
|
||||
* improved MGED nirt cmd handling for large object lists - Cliff Yapp
|
||||
* removed requirement to launch nirt with objects listed - Cliff Yapp
|
||||
* improved k-g LS-DYNA keyword file geometry importer - Ali Haydar
|
||||
* added bot support for plate mode thickness get/set cmds - Cliff Yapp
|
||||
* fixed dbconcat treatment of a '/' prefix character - Cliff Yapp
|
||||
* fixed bb '-o' oriented bounding box option in MGED - Chris McGregor
|
||||
* added manual page for pixcmp, bwish, btclsh - Sean Morrison
|
||||
* fixed "ted" text edit and "make_pnts" GED commands - Cliff Yapp
|
||||
* renamed MGED x command to solid_report for clarity - Sean Morrison
|
||||
* fixed Archer "Center View" button and vslew GED command - Cliff Yapp
|
||||
* added support for console text editing on Windows - Cliff Yapp
|
||||
* added bb '-m' option for outputting midpoint - Chris McGregor
|
||||
* fixed sed crash when editing a brep object in MGED - Cliff Yapp
|
||||
* fixed primitive & matrix edit GUIs in MGED ("x -1") - Sean Morrison
|
||||
* added (align, dir and print) subcommands to 'view' - Chris McGregor
|
||||
* added (autoview, lookat, saveview) to 'view' - Chris McGregor
|
||||
* fixed mged 'process' command on read-only databases - Sean Morrison
|
||||
* replaced ADRT with HLBVH-acclerated BoT tracing - Timothy Reynolds
|
||||
* accelerated BoT ray tracing HLBVH integration across all librt apps
|
||||
- Timothy Reynolds, Connor McLean, Ian Beckett, Samuel Reed,
|
||||
- Gaultier Debarre, Sean Morrison, Chris McGregor, Cliff Yapp
|
||||
* various manpage and help text updates - Josh Baker
|
||||
* fixed -exec behavior with 'flat' search in mged - Chris McGregor
|
||||
* improved logging behavior from multiple threads - Kenneth Davis
|
||||
* removed libgdiam dependency - Chris McGregor
|
||||
* updated strclear dependency to latest bsd upstream - Cliff Yapp
|
||||
* updated Assimp to v5.4.3, with patch for CVE-2025-2151 - Cliff Yapp
|
||||
* updated OpenNURBS dependency to v8.10.24228.13001 - Cliff Yapp
|
||||
* updated GeometricTools dependency to 7adae93f8 - Cliff Yapp
|
||||
* updated GDAL dependency to v3.9.2 - Cliff Yapp
|
||||
* updated PROJ dependency to v9.5.0 - Cliff Yapp
|
||||
* updated SQLite dependency to v3.46.1 - Cliff Yapp
|
||||
* updated lmdb dependency to 9c9d345 - Cliff Yapp
|
||||
* updated libtiff dependency to v4.7.0 - Cliff Yapp
|
||||
* updated netpbm dependency to v10.86.42 - Cliff Yapp
|
||||
* updated LIEF dependency to v0.15.1 - Cliff Yapp
|
||||
* updated libpng dependency to v1.6.44 - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2024-09-24 Release 7.40.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* various manpage and help text updates - Josh Baker
|
||||
* improved gist -F default behavior - Chris McGregor
|
||||
* fixed gist crashing with halfspaces in component - Chris McGregor
|
||||
* fixed lint BoT check testing - Cliff Yapp
|
||||
* improved overlap checker dialog behavior - Chris McGregor
|
||||
* fixed rtwizard tree visuals in gist - Chris McGregor
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2024-08-16 Release 7.40.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
This major release of BRL-CAD improves the robustness of the facetize
|
||||
command. Building on work begun in 7.38.0, for the first time BRL-CAD
|
||||
is able to successfully facetize all of BRL-CAD's example geometries.
|
||||
This involves a major change to the processing pipeline of the
|
||||
facetize command, allowing handling of individual primitives to be
|
||||
fault tolerant and automatically attempting fallback methods.
|
||||
Historically BRL-CAD facetize has attempted to produce output meshes
|
||||
even when individual operations fail by silently skipping over failing
|
||||
inputs, but now this behavior is changed to a stricter policy of
|
||||
halting when individual elements of the process do not succeed.
|
||||
|
||||
This release also incorporates the tool 'gist' for generating a one
|
||||
page graphical overview and summary of the contents of a .g database.
|
||||
This tool is the culmination of work by multiple student teams from
|
||||
Texas A&M University and incorporates automatic layout features to
|
||||
produce geometry-appropriate visual arrangements.
|
||||
|
||||
Also new in this release are capabilities for testing and repairing
|
||||
triangle meshes. The lint command will now validate solid BoT
|
||||
behavior with the raytracer, and the 'bot repair' command is able to
|
||||
perform hole filling operations on some categories of non-manifold
|
||||
BoTs. Another related new feature allows users to generate explicit
|
||||
volumetric BoTs using plate mode BoTs as inputs via the 'bot extrude'
|
||||
command.
|
||||
|
||||
This release introduces a major change in the management of 3rd party
|
||||
dependencies. The src/other directory has been replaced by an
|
||||
external repository specifically tasked with the job of managing 3rd
|
||||
party libraries. By default BRL-CAD will download and build necessary
|
||||
dependencies as part of its build automatically. However, note that
|
||||
an internet connection is required by default to access this
|
||||
repository. See the INSTALL file for more details and options for
|
||||
preparing to build without internet availability.
|
||||
|
||||
Developers requiring only a subset of BRL-CAD (for example, if a
|
||||
project only needs librt and its dependencies) can now define subsets
|
||||
of BRL-CAD to build with the BRLCAD_COMPONENTS variable. See INSTALL
|
||||
for more information.
|
||||
|
||||
* added new k-g LS-DYNA .k file to .g importer - Daniel Roßberg
|
||||
* improved obj-g import naming - Chris McGregor
|
||||
* added importer attr to stl-g and obj-g BoT objects - Cliff Yapp
|
||||
* improved object name generation for stl-g importer - Cliff Yapp
|
||||
* updated 3dm-g input attribute: converter -> importer - Cliff Yapp
|
||||
* fixed mged 'search -or' filter behavior - Cliff Yapp, Chris McGregor
|
||||
* major improvements to 'gist' features and usability
|
||||
- Rohan Dhawan, Leo Feng, Sam Hollenbeck, Timothy Pham,
|
||||
- Yida Zou, Chris McGregor
|
||||
* updated pinewood.g test model - Josh Baker
|
||||
* updated edcodes man page and help text - Josh Baker
|
||||
* update mvall man page - Josh Baker
|
||||
* updated OpenCV library to version 4.10.0 - Cliff Yapp
|
||||
* updated GDAL library to version 3.9.0 - Cliff Yapp
|
||||
* improved 3dm-g error message when file does not exist - Cliff Yapp
|
||||
* added new BoT raytracing validity checks to lint cmd - Cliff Yapp
|
||||
* removed upper limit on MGED pnts cmd point count - Cliff Yapp
|
||||
* added a -t option to bot flip to check BoT orientation - Cliff Yapp
|
||||
* fixed shaded drawing of CW BoT solids - Cliff Yapp
|
||||
* added reair man page - Josh Baker
|
||||
* added 'help reair' mged command help text - Josh Baker
|
||||
* added experimental 'imgdiff' command-line tool - Cliff Yapp
|
||||
* updated OpenNURBS library to version 8.8.24166.15000 - Cliff Yapp
|
||||
* improved 'help lc' mged command help text - Josh Baker
|
||||
* added 'help lint' mged command help text - Josh Baker
|
||||
* added man pages for 'bot check' and 'bot extrude' cmds - Cliff Yapp
|
||||
* enhanced bot extrude command to output a BoT mesh - Cliff Yapp
|
||||
* added bot check manifold cmd for bot validity testing - Cliff Yapp
|
||||
* added bot repair command for filling holes in meshes - Cliff Yapp
|
||||
* added Utah RLE image reading and writing to libicv - Cliff Yapp
|
||||
* added "standardize" option to GED attr command - Cliff Yapp
|
||||
* added -L option to dbconcat for lazy prefix/suffix use - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2024-03-18 Release 7.38.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* added "rtsurf" exterior surface area tool prototype - Sean Morrison
|
||||
* updated sqlite3 to version 3.45.1 - Cliff Yapp
|
||||
* updated libpng to version 1.6.43 - Cliff Yapp
|
||||
* updated zlib to version 1.3.1 - Cliff Yapp
|
||||
* updated and corrected dbconcat man page - Cliff Yapp
|
||||
* improved ambient occlusion rt during -k cut planes - Sean Morrison
|
||||
* changed rt ambient occlusion randomization default - Sean Morrison
|
||||
* added ambient occlusion example to rt manual pages - Sean Morrison
|
||||
* fixed rtweight output display inside MGED - Chris McGregor
|
||||
* added shipping container example geometry model - Josh Baker
|
||||
* added traffic light example geometry model - Chris McGregor
|
||||
* improved rtwizard command-line option reporting - Sean Morrison
|
||||
* added self-intersecting torus ray tracing support - Sean Morrison
|
||||
* fixed rt crash rendering to -F/dev/null - Sean Morrison
|
||||
* added mater man page density table example - Chris McGregor
|
||||
* adjusted default ghosting intensity in rtwizard - Josh Baker
|
||||
* fixed MGED command line handling of objects named 'y' - Cliff Yapp
|
||||
* fix double printing of last 'search -exec' result - Chris McGregor
|
||||
* improve 'search -v' to support multiple levels - Chris McGregor
|
||||
* update 'search -v' to report # of objects found - Chris McGregor
|
||||
* added a "bots only" mode to conversion.sh script - Cliff Yapp
|
||||
* fixed asc2g/g2asc support for brep primitives - Cliff Yapp
|
||||
* added brep and bot versions of pinewood .g model - Josh Baker
|
||||
* added new .g example file "Annual Gift Man" - Josh Baker
|
||||
* fixed dsp terrain file data loading for relative paths - Cliff Yapp
|
||||
* updated Manifold lib for improved facetize robustness - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2023-11-06 Release 7.38.0 ---
|
||||
----------------------------------------------------------------------
|
||||
This major release of BRL-CAD introduces significant improvements to
|
||||
the robustness of the facetize command by leveraging the Manifold
|
||||
library for boolean evaluation of meshes. Facetization is an operation
|
||||
that converts boolean CSG hierarchies to evaluated triangle meshes,
|
||||
commonly used as a preliminary step in geometry export. As an
|
||||
example, the following results show before-and-after differences when
|
||||
processing high level assemblies in BRL-CAD's example geometry files:
|
||||
|
||||
% success, old: 88.9% (249 of 280) Time elapsed: 7256 seconds
|
||||
% success, new: 98.9% (277 of 280) Time elapsed: 1044 seconds
|
||||
|
||||
* add 'brep dump' subcommand to write out brep objects - Cliff Yapp
|
||||
* improve 'x' default behavior in MGED - Chris McGregor
|
||||
* fixed 'edcolor' and 'color -e' on Windows - Chris McGregor
|
||||
* ported fbcolor, fblabel, fbpoint, fbzoom to Windows - Sean Morrison
|
||||
* new 'gist' tool for generating 1-page geometry info summary reports
|
||||
- Allyson Hoskinson, Andrew Plant, Mark Sturtevant,
|
||||
- Danny Chen, Michael Tao, Sean Morrison
|
||||
* add support for dbconcat -O (overwrite) - Chris McGregor
|
||||
* improved 'lc' -d and -m interactions with aircodes - Chris McGregor
|
||||
* fixed 'make bot' inverted face normals - Chris McGregor
|
||||
* fixed 'l' evaluation for pathed objects - Chris McGregor
|
||||
* improved MGED faceplate params control, added font_size - Cliff Yapp
|
||||
* fix MGED 'brep' command crashing without database open - Cliff Yapp
|
||||
* fix MGED 'pnts read' and 'make_pnts' commands - Chris McGregor
|
||||
* improved NURBS editing functionality - Gregory Li
|
||||
* fix MGED 'listval' crashing with max path lengths - Chris McGregor
|
||||
* fixed garbage_collect MGED command on Windows - Cliff Yapp
|
||||
* fixed archer crashing with 'make' command - Cliff Yapp
|
||||
* improved and restructured rtwizard's manual page - Sean Morrison
|
||||
* fixed E command in MGED - Cliff Yapp
|
||||
* made improvements to a variety of manual pages - Josh Baker
|
||||
* remove bundled burst tool (DEPRECATED 7.32) - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2023-07-26 Release 7.36.0 ---
|
||||
----------------------------------------------------------------------
|
||||
This major release of BRL-CAD introduces significant updates to
|
||||
geometry conversion support. The update includes modernization for
|
||||
NURBS importing and interaction, BoT manipulation, and incorporates
|
||||
many new formats for importing and exporting to BRL-CAD database
|
||||
files.
|
||||
|
||||
The geometry conversion tool (GCV) now supports mesh importing
|
||||
from: 3D, 3DS, 3MF, AC, AMF, ASE, ASSBIN, B3D, BVH, COB, COLLADA, CSM,
|
||||
FBX, GLTF/GLB 1.0 + 2.0, HMP, IFC-STEP, IQM, IRR, IRRMESH, LWO, LWS,
|
||||
M3D, MD2, MD3, MD5, MDC, MDL, MMD, MS3D, NDO, NFF, OFF, OGRE, OPENGEX,
|
||||
Q3BSP, Q3D, RAW, SIB, SMD, TERRAGEN, X, X3D, XGL.
|
||||
Additionally, GCV now supports mesh exporting to: 3DS, 3MF, ASSBIN,
|
||||
ASSJSON, ASSXML, COLLADA, GLTF, PBRT, STEP, X, X3D.
|
||||
|
||||
This release also introduces new BoT subcommands to improve
|
||||
manipulation and preparation. The subdivision "subd" command
|
||||
incorporates 5 new subdivision algorithms. The "flip" command will
|
||||
flip surface normals - effectively turning the BoT 'inside out'.
|
||||
Lastly, the "smooth" command will smooth the BoT's topology.
|
||||
|
||||
* Added a point-inside-object subcmd "inside" to analyze - Cliff Yapp
|
||||
* Added "flip" "subd" and "smooth" subcommands to BoT - Cliff Yapp
|
||||
* Fixed g-ply converter on Windows - Chris McGregor
|
||||
* Fixed infinite loop in noise generation - Sean Morrison
|
||||
* Fixed analyze in/out test for multi-segment ray hits - Cliff Yapp
|
||||
* Fixed analyze cmd crash when specifying invalid objects - Cliff Yapp
|
||||
* Fixed search -attr behavior with names having spaces - Cliff Yapp
|
||||
* Fixed nirt hanging on hits with a lot of output - Chris McGregor
|
||||
* nirt -b is now default behavior - Chris McGregor
|
||||
* Updated OpenNURBS library, 3dm-g now supports ver. 7 files
|
||||
- Cliff Yapp, Chris McGregor
|
||||
* Updated OpenMesh library to version 9.0 - Cliff Yapp
|
||||
* Updated Open Asset Import Library - v5.2.5 + fix - Chris McGregor
|
||||
* Updated Tcl/Tk to version 8.6.13 - Cliff Yapp
|
||||
* Updated NETPBM library to version 10.73.42 - Cliff Yapp
|
||||
* Updated GDAL library to version 3.6.3 - Cliff Yapp
|
||||
* Updated PROJ library to version 9.2.0 - Cliff Yapp
|
||||
* Updated PNG library to version 1.6.39 - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2023-02-27 Release 7.34.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* fixed a problem with matrix editing - Chris McGregor
|
||||
* fixed gcv reading of .g files as input - Cliff Yapp
|
||||
* add support to nirt non-drawn objects - Chris McGregor
|
||||
* reduced 'l' cmd verbosity for bot/brep primitives - Chris McGregor
|
||||
* fixed man page scrolling on Windows - Chris McGregor
|
||||
* fixed MGED file creation not applying extension - Chris McGregor
|
||||
* create 'reair' to quickly set aircode (like remat) - Chris McGregor
|
||||
* fixed 'search' of attribute equal to 0 - Chris McGregor
|
||||
* improve nirt output printing within MGED - Chris McGregor
|
||||
* fixed nirt -A (attribute) to work within MGED - Chris McGregor
|
||||
* fixed nirt -f (fmt) to work within MGED - Chris McGregor
|
||||
* fixed nirt of objects with hyphens in name - Chris McGregor
|
||||
* correct facetall.sh to automatically restart on failure - Cliff Yapp
|
||||
* updated nirt to backout of geometry by default - Chris McGregor
|
||||
* added nirt -c flag to use view center, not backout - Chris McGregor
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2022-11-23 Release 7.34.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
With development efforts spanning several years, this major update to
|
||||
BRL-CAD includes considerable progress on infrastructure for graphical
|
||||
user interface improvements, geometry conversion, and physically-based
|
||||
rendering. It also includes hundreds of logic and memory management
|
||||
bug fixes, potential code vulnerability updates, and other issues
|
||||
reported by Coverity and Clang Static Analysis.
|
||||
|
||||
This release also overhauls the way 3rd-party dependencies are managed
|
||||
in BRL-CAD. Native build systems are now used in order for updates to
|
||||
be more readily applied, to reduce maintenance overhead, and to set
|
||||
the stage for the aforementioned major feature developments.
|
||||
|
||||
* fixed perspective to orthogonal view toggling in archer - Cliff Yapp
|
||||
* removed 'nburst' rewrite with burst now deprecated - Cliff Yapp
|
||||
* fixed bot_merge with oriented plate mode bots - Sean Morrison
|
||||
* bot_dump infers output type from filename extension - Sean Morrison
|
||||
* re-added MGED viewring, sweep, collab, & rateknob menus - Cliff Yapp
|
||||
* fixed a crash when shaded NURBS brep drawing fails - Cliff Yapp
|
||||
* added new man pages for brep, process, and ps commands - Cliff Yapp
|
||||
* added new man page for 3dm-g Rhino3D importer - Cliff Yapp
|
||||
* improved bot_dump default command help - Chris McGregor
|
||||
* improved suffix handling for 3dm-g converted primitives - Cliff Yapp
|
||||
* added -N view obj name option to overlay command - Cliff Yapp
|
||||
* added man page for MGED Overlaps Tool - Chris McGregor
|
||||
* major STEPcode updates, using unmodified upstream 0.8.1 - Cliff Yapp
|
||||
* added aircode reporting support to the lc command - Sean Morrison
|
||||
* 3dm-g now converts as encountered, not alphabetized - Chris McGregor
|
||||
* updated Tcl/Tk to version 8.6.12 - Cliff Yapp
|
||||
* updated netpbm to version 10.73.40 - Cliff Yapp
|
||||
* updated zlib to version 1.2.13 - Cliff Yapp
|
||||
* fixed mged -c 'unknown variable' warning dialogs - Sean Morrison
|
||||
* fixed and improved gqa grid spacing - Daniel Roßberg
|
||||
* improved mged & archer html command help formatting - Sean Morrison
|
||||
* fixed archer empty string ("") loading behavior - Cliff Yapp
|
||||
* rt* tools' -P option accepts negative #core counts - Sean Morrison
|
||||
* added text label size & rotation angle support to annotation objects
|
||||
- Ali Haydar, Himanshu Nayak, and Daniel Roßberg
|
||||
* gqa -Ae exposed air report no longer has gapped air - Sean Morrison
|
||||
* fixed rt framebuffer bug with -g/-G cellsize options - Sean Morrison
|
||||
* added new idents(5) file format manual page - Sean Morrison
|
||||
* preserved path prefixes on search cmd results - Cliff Yapp
|
||||
* new 'material' command and material object infrastructure
|
||||
- Dinges, Connelly, Olivarez, McGregor, Studwell, Wilson
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2022-05-08 Release 7.32.6 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* reduced mged & archer max image size and memory use - Sean Morrison
|
||||
* fixed librt handling of object names with '/' chars - Cliff Yapp
|
||||
* changed fast4-g to not make references to empty regions - Cliff Yapp
|
||||
* fixed gcv option handling - Cliff Yapp
|
||||
* updated bundled Eigen dependency to v3.4.0 - Cliff Yapp
|
||||
* fixed bot_merge crash when bots are of different types - Cliff Yapp
|
||||
* fixed nirt -L to not require database and objects - Sean Morrison
|
||||
* fixed bug reading older VOL objects with file data - Sean Morrison
|
||||
* fixed pixscale bug when scaling images down - Sean Morrison
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2021-07-27 Release 7.32.4 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* Added -matrix search filter for finding comb matrices - Cliff Yapp
|
||||
* fixed MGED handling of long running subprocesses in script mode
|
||||
- Cliff Yapp, Sean Morrison
|
||||
* improve documentation for bot modes in bot and search - Cliff Yapp
|
||||
* added -o output option to GED stat command - Cliff Yapp
|
||||
* fixed overlay support for drawing multiple files - Cliff Yapp
|
||||
* fixed file creation for tire command - Cliff Yapp
|
||||
* fixed mixing object and full path searches in MGED - Cliff Yapp
|
||||
* fixed launching of ISST graphical viewer - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2021-02-06 Release 7.32.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* updated Creo export plugin to work with latest Creo - Bill Chambers
|
||||
* fixed memory leak in MGED's gdiff command - Cliff Yapp
|
||||
* fixed OSX g-iges crash due to improper memory freeing - Cliff Yapp
|
||||
* fixed GQA multithreaded plotting file corruption - Cliff Yapp
|
||||
* added -S structural diff option to MGED gdiff command - Cliff Yapp
|
||||
* added -v verbosity option to MGED tree command - Cliff Yapp
|
||||
* added -? option to MGED which command - Cliff Yapp
|
||||
* MGED, Archer, rtwizard graphically launch with pwd=HOME - Cliff Yapp
|
||||
* fixed reporting of MGED "vars" command - Cliff Yapp
|
||||
* updated MGED to not open non-.g-files as databases - Cliff Yapp
|
||||
* fixed MGED I/O when running GED subcommands - Cliff Yapp
|
||||
* added decimation control examples to facetize man page - Cliff Yapp
|
||||
* changed gcv converter to append to existing .g files - Cliff Yapp
|
||||
* removed MGED collaboration and rateknob features - Cliff Yapp
|
||||
* removed MGED ViewRing menu and sweep rectangle features - Cliff Yapp
|
||||
* fixed crash when trying to shade invalid breps - Cliff Yapp
|
||||
* improved librt CPU timer behavior - Cliff Yapp
|
||||
* fixed example in saveview manual page - Sean Morrison
|
||||
* added support for in-database vol primitive data - Sumagna Das
|
||||
* changed 'mvall' to rename all refs even w/ no object - Sean Morrison
|
||||
* updated MGED Overlap GUI to run reliably on Windows - Cliff Yapp
|
||||
* fixed MGED search command crash on empty database - Sean Morrison
|
||||
* improved performance calculating BoT bounding boxes - Vikram Atreya
|
||||
* fixed MGED crash closing multiple rt views on Windows - Cliff Yapp
|
||||
* fixed 'n' key binding override with MGED key forwarding - Cliff Yapp
|
||||
* fixed mged crash when there are no display managers - Sean Morrison
|
||||
* added pixcmp -n length flag for subset comparisons - Sean Morrison
|
||||
* added pixcmp -s same and -d different printing flags - Sean Morrison
|
||||
* updated non-shape objects list for search shape filter - Cliff Yapp
|
||||
* added volume type to search -type filters - Cliff Yapp
|
||||
* applied shorter default title in fast4-g conversions - Cliff Yapp
|
||||
* improved pixcmp support for subset image comparisons - Sean Morrison
|
||||
* MGED analyze subtract, intersect, summarize subcommands - Cliff Yapp
|
||||
* added quiet (-q) flag to MGED kill command - Cliff Yapp
|
||||
* added MGED stat command for reporting of object info - Cliff Yapp
|
||||
* corrected examples in gdiff man page - Cliff Yapp
|
||||
* fixed help message for -F option on gdiff command - Cliff Yapp
|
||||
* fixed mged -c bomb attaching to graphical displays - Sean Morrison
|
||||
* fixed titlebar bug opening .g with filename spaces - Sean Morrison
|
||||
* added a new 'N' graphics window keybinding to run nirt - Cliff Yapp
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2020-09-14 Release 7.32.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
This major release of BRL-CAD introduces significant updates to core
|
||||
library infrastructure. The update includes restructuring of nearly
|
||||
all of BRL-CAD's display infrastructure in preparation for upcoming
|
||||
significant GUI changes. This release also fixes over fifty of
|
||||
BRL-CAD's command-line utilities so they work properly on Windows.
|
||||
This is likely the last major release of BRL-CAD on Subversion
|
||||
infrastructure with BRL-CAD's imminent migration to Git.
|
||||
|
||||
* added additional pre-defined MGED view key bindings - Cliff Yapp
|
||||
* added basic example to remrt man page - Cliff Yapp, Sean Morrison
|
||||
* added new 'nburst' version of classic burst tool - Cliff Yapp
|
||||
* added 'bot set' command for low level BoT manipulation - Cliff Yapp
|
||||
* report semantic strings for 'bot get' mode/orientation - Cliff Yapp
|
||||
* added new manual page for the libicv library - Sumagna Das
|
||||
* added -size filter to MGED search command - Cliff Yapp
|
||||
* upgraded Tcl/Tk from 8.5.19 to 8.6.10 - Cliff Yapp
|
||||
* bundled zlib & libpng use API prefix and library suffix - Cliff Yapp
|
||||
* extensive improvements to OpenCL ray trace pipeline - Rishabh Suthar
|
||||
* improved rtweight density value warnings - Sean Morrison, Cliff Yapp
|
||||
* added perception-based hdtv and hdr modes for pix-bw - Sean Morrison
|
||||
* fixed semi-transparent DM and FB windows on Linux - Cliff Yapp
|
||||
* improved rtweight manual page - Sean Morrison
|
||||
* added line reporting TCP listening port to remrt output - Cliff Yapp
|
||||
* added help options support (-h,-?) to asc2dsp and g2asc - Cliff Yapp
|
||||
* fixed crash when drawing a VOL with missing data - Cliff Yapp
|
||||
* facetall.sh script is replaced by MGED facetize command - Cliff Yapp
|
||||
* dynamic LIBGED command loading in MGED & Archer - Cliff Yapp
|
||||
* removed MGED "Display Manager" switching menu options - Cliff Yapp
|
||||
* dynamic LIBDM display manager loading in MGED & Archer - Cliff Yapp
|
||||
* fixed 'idents' crash when running in a read-only dir - Sean Morrison
|
||||
* fixed fb tools w/ redirected files and cv on Windows - Sean Morrison
|
||||
* expanded 'bo' command docs with a DSP input example - Sean Morrison
|
||||
* fixed 'in' making joint, superell, & script objects - Sean Morrison
|
||||
* Creo converter always writes out CREO_NAME attribute - Sean Morrison
|
||||
* improved gdiff -F filtering option behavior - Cliff Yapp
|
||||
* improved gdiff command verbosity reporting options - Cliff Yapp
|
||||
* improved Combination Editor button behaviors in MGED - Sean Morrison
|
||||
* added 'asc' geometry import and export support to gcv - Cliff Yapp
|
||||
* consistent usage taxonomy for ident-related commands - Sean Morrison
|
||||
* added units label to the Archer in-scene scale graphic - Cliff Yapp
|
||||
* added framebuffer capture option to screengrab command - Cliff Yapp
|
||||
* added framebuffer writing option to overlay command - Cliff Yapp
|
||||
* added tree search option to 'whichid' and 'whichair' - Cliff Yapp
|
||||
* changed 'whichid' and 'whichair' to print ranges of unused IDs
|
||||
- Nick Reed, Cliff Yapp
|
||||
* improved output path sorting of search command - Cliff Yapp
|
||||
* added "bot extrude" command for making ARB6s from bots - Cliff Yapp
|
||||
* added 3dm-g failure message about supported versions - Cliff Yapp
|
||||
* fixed bw-png writing corrupted png files on Windows - Sean Morrison
|
||||
* added MGED 'dm type' subcommand for reporting DM type - Cliff Yapp
|
||||
* improved vdeck input support for Windows text files - Sean Morrison
|
||||
* fixed MGED 'plot' & 'brep plot' commands on Windows - Sean Morrison
|
||||
* fixed numerous image utilities reading binary input files on Windows
|
||||
- Sean Morrison, Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2020-07-24 Release 7.30.10 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* added 3dm-g failure message about supported versions - Cliff Yapp
|
||||
* fixed MGED "in" command support for datums - Sean Morrison
|
||||
* fixed bw-png writing corrupted png files on Windows - Sean Morrison
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2020-05-08 Release 7.30.8 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* added gchecker tool to generate MGED overlap inputs - Cliff Yapp
|
||||
* improved behavior of MGED overlap checker GUI - Nick Reed
|
||||
* fixed startup dimensions of overlap checker window - Nick Reed
|
||||
* fixed rtedge line drawing color when using -W flag - Cliff Yapp
|
||||
* added -F option to lint cmd to test specific solid types - Cliff Yapp
|
||||
* added support to MGED for zooming with mouse wheel - Cliff Yapp
|
||||
* fixed solid editing wireframe drawing in MGED - Nick Reed
|
||||
* added .r suffixes to region names in 3dm-g conversion - Cliff Yapp
|
||||
* add .r suffixes to region names in 3dm-g conversion - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2020-03-19 Release 7.30.6 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* fixed comgeom-g GIFT combination conversion - Daniel Roßberg
|
||||
* fixed transparent drawing in MGED - Nick Reed
|
||||
* fixed solid NURBS brep intersection testing - Cliff Yapp
|
||||
* removed extra blank line after commands in MGED GUI - Sean Morrison
|
||||
* minor improvement to NURBS ray tracing performance - Sean Morrison
|
||||
* added "plate" object type filter to search command - Cliff Yapp
|
||||
* fixed latent logging bug during facetize on Windows - Bob Parker
|
||||
* fixed bug closing rt framebuffer windows on Windows - Sean Morrison
|
||||
* added EBM support for reading from database objects - Jeffrey Liu
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2019-12-05 Release 7.30.4 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* improved Creo export plugin handling of color and shader - Nick Reed
|
||||
* enhanced attr list command to support reporting values - Cliff Yapp
|
||||
* updated FAA Generic Twin example FASTGEN model - Cliff Yapp
|
||||
* fixed handling of duplicate FASTGEN object names - Cliff Yapp
|
||||
@@ -875,13 +41,9 @@ infrastructure with BRL-CAD's imminent migration to Git.
|
||||
* changed mged escape key binding to reset mouse mode - Sean Morrison
|
||||
* removed default xXyYzZ0 rate rotation key bindings - Sean Morrison
|
||||
* improved tessellation of nearly coplanar surfaces - John Anderson
|
||||
* fixed annotations display on Windows - Daniel Roßberg, Ali Haydar
|
||||
* fixed display of annotations on Windows - Daniel Roßberg
|
||||
* fixed rtedge and rtwizard occlusion object edge bug - Sean Morrison
|
||||
* rt* tools no longer force outputs to be read-only - Sean Morrison
|
||||
* fixed bug listing annotations with short label strings - Ali Haydar
|
||||
* improved support for label placement in annotations - Ali Haydar
|
||||
* fixed bug in annotation object bounding box calculation - Ali Haydar
|
||||
* fixed an annotation leader line bug affecting display - Ali Haydar
|
||||
* fixed 'burst' crash when run without options - Sean Morrison
|
||||
* changed rtweight to not truncate long pathnames - Sean Morrison
|
||||
* added new ball bearing example geometry model - Sean Morrison
|
||||
@@ -901,10 +63,9 @@ infrastructure with BRL-CAD's imminent migration to Git.
|
||||
- Sean Morrison, Cliff Yapp
|
||||
* added a copy subcommand to MGED's attr command - Cliff Yapp
|
||||
* fixed a locking condition in MGED's rtcheck command - Cliff Yapp
|
||||
* added support for >=< prefixes for mater -d get options - Cliff Yapp
|
||||
* added support for >=< prefixes for mater -d get options Cliff Yapp
|
||||
* fixed brlman lookup location of html manual pages - Cliff Yapp
|
||||
* fixed rtweight infinite loop bug on invalid .density - Cliff Yapp
|
||||
* fixed rt -t top-to-bottom parallel rendering option - Sean Morrison
|
||||
* fixed rt -t top-to-bottom parallel rendering option Sean Morrison
|
||||
* added a 'flip' normals command to MGED's brep command - Cliff Yapp
|
||||
* added rtweight support for in-.g density information - Cliff Yapp
|
||||
* improved usability of vol primitives w/ missing data - Sean Morrison
|
||||
@@ -971,8 +132,8 @@ corrections.
|
||||
This major release of BRL-CAD incorporates a new feature for caching
|
||||
of raytrace acceleration structures used when working with explicit
|
||||
boundary representation (BREP) Non-uniform Rational Basis Spline
|
||||
(NURBS) objects. This will result in significant improvements to run
|
||||
times when repeatedly raytracing BREP objects.
|
||||
(NURBS) solids. This will result in significant improvements to
|
||||
run times when repeatedly raytracing BREP solids.
|
||||
|
||||
Support for terrain import has been significantly expanded with the
|
||||
addition of a new Geospatial Data Abstraction Library (GDAL) based
|
||||
@@ -1092,8 +253,6 @@ and address portability issues.
|
||||
* fix rtedge foreground/background color options - Jon Engbert
|
||||
* support rt -C colors specified as 0-255 or 0.0-1.0 - Jon Engbert
|
||||
* fixed xpush bug leaving stray top-level objects - Nick Reed
|
||||
* removed MGED wrapper 'mged.bat' batch script on Windows - Cliff Yapp
|
||||
* fixed png-pix redirected output on Windows - Bob Parker
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
@@ -1147,7 +306,7 @@ performance ray tracing pipeline.
|
||||
* fixed patch-g tool and E command infinite loop bug - Sean Morrison
|
||||
* improved NMG ray tracing fault tolerance - Sean Morrison
|
||||
* added 3dm-g support for layers and names - Keith Bowman
|
||||
* fixed issue preserving color/shader info with 3dm-g - Jon Engbert
|
||||
* fixed color/shader preservation issue with 3dm-g importer - Jon Engbert
|
||||
* added 3dm-g support for mesh objects - Jon Engbert
|
||||
* added csg implicit hierarchy conversion to brep command - Cliff Yapp
|
||||
* fixed crash in clone when told to make zero copies - Cliff Yapp
|
||||
@@ -1161,7 +320,7 @@ performance ray tracing pipeline.
|
||||
* removed any-png.sh - use pix tools - Sean Morrison
|
||||
* removed librtserver interface - Cliff Yapp
|
||||
* removed MGED per_line command - Sean Morrison
|
||||
* updated MGED tops command: default to -g -u behavior - Sean Morrison
|
||||
* updated MGED tops command: default to -g -u behavior- Sean Morrison
|
||||
* removed MGED -n option; use -c instead - Sean Morrison
|
||||
* removed MGED commands pl, pov and polybinout - Sean Morrison
|
||||
* removed UtahRLE image tools - Cliff Yapp
|
||||
@@ -1169,7 +328,7 @@ performance ray tracing pipeline.
|
||||
* added brlman -S option to specify man page section - Cliff Yapp
|
||||
* modified rtg3 to avoid outputting excessive LOS - Nick Gerstner
|
||||
* extended burst and rtg3 to output 5 digit ID numbers - Nick Gerstner
|
||||
* improved draw command manual page documentation - Cliff Yapp
|
||||
* improved draw command manual page documenation - Cliff Yapp
|
||||
* added lc -m option to report multi-material/los regions - Cliff Yapp
|
||||
* added new 'icv' image conversion tool w/ pix, bw, dpix, png, ppm
|
||||
- Mohit Daga, Cliff Yapp, Sean Morrison, Erik Greenwald
|
||||
@@ -1178,7 +337,7 @@ performance ray tracing pipeline.
|
||||
* improved datum wireframes (yellow) and fixed arrowheads - Cliff Yapp
|
||||
* added initial manual page for 'burst' ray dispatch tool - Cliff Yapp
|
||||
* improved wireframe display list performance - Keith Bowman
|
||||
* added draw -S for simplified wireframes, no subtractions - Cliff Yapp
|
||||
* added draw -S for simplied wireframes, no subtractions - Cliff Yapp
|
||||
* added draw -L# to draw bounding boxes for large objects - Cliff Yapp
|
||||
* added 3dm-g instance reference and definition import - Jon Engbert
|
||||
* minor rtwizard graphical user interface reorganization - Cliff Yapp
|
||||
@@ -1233,7 +392,6 @@ performance ray tracing pipeline.
|
||||
* removed "high resolution" options from all commands - Carl Moore
|
||||
* improved performance of archer loading large BoT models - Nick Reed
|
||||
* added evaluated shaded drawing preference mode and menu - Nick Reed
|
||||
* fixed .mgedrc creation corruption with closed database - Cliff Yapp
|
||||
* extensive improvements to NURBS Boolean evaluation - Nick Reed
|
||||
* added 'bot chull' for creating convex hull envelopes - Cliff Yapp
|
||||
* new manual page for the g-voxel exporter - Mandarj
|
||||
@@ -1402,7 +560,7 @@ tracing infrastructure including CPU thread affinity locking for
|
||||
faster performance, more consistent grazing hit behavior, expanded
|
||||
volume and surface area calculations, numerous bug fixes, and more
|
||||
robust NURBS evaluation. Following BRL-CAD's interface deprecation
|
||||
policy (see CHANGES.adoc), the Jove text editor is no longer being
|
||||
policy (see CHANGES file), the Jove text editor is no longer being
|
||||
bundled. Numerous converters receive robustness improvements
|
||||
including the STEP, Patch, and 3DM importers.
|
||||
|
||||
@@ -2079,7 +1237,7 @@ undo support and graphical editing, are expanded upon.
|
||||
* pipe now validates independent of parameter order - Daniel Roßberg
|
||||
* added '-r' color randomize option to 3dm-g importer - Cliff Yapp
|
||||
* enhanced '-v' verbosity option in 3dm-g importer - Cliff Yapp
|
||||
* re-added -A & -o attribute options to 'draw' and 'erase' - Bob Parker
|
||||
* readded -A & -o attribute options to 'draw' and 'erase' - Bob Parker
|
||||
* fixed bug in 'E' command to show object names - John Anderson
|
||||
* initial obj-g geometry importer - Erik Greenwald
|
||||
* Pro/E export plugin creates a 'Proe_Name' attribute - Bob Parker
|
||||
@@ -3751,8 +2909,8 @@ future. For those situations, developers using the BRL-CAD libraries
|
||||
may need to update to new API features in order to link with newer
|
||||
versions of BRL-CAD.
|
||||
|
||||
See doc/changes/deprecated.adoc and doc/changes/obsoleted.adoc for
|
||||
features that are deprecated or have already become obsolete.
|
||||
See the CHANGES file for a transcript of features that are deprecated
|
||||
or have already become obsolete.
|
||||
|
||||
---
|
||||
See doc/history.txt for more historic information on BRL-CAD. There
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
BRL-CAD
|
||||
Release 7.44.2
|
||||
Release 7.30.6
|
||||
http://brlcad.org/
|
||||
|
||||
BRL-CAD is a powerful cross-platform open source combinatorial
|
||||
solid modeling system that includes an interactive 3D solid geometry
|
||||
editor, a network-distributed symmetric multiprocessing (SMP)
|
||||
high-performance ray-tracer with support for rendering and geometric
|
||||
analysis, image and signal-processing tools, a system performance
|
||||
analysis benchmark suite, a flexible geometry scripting interface,
|
||||
and a high-performance geometric representation and analysis library.
|
||||
Constructive Solid Geometry (CSG) solid modeling system that includes
|
||||
an interactive 3D solid geometry editor, a network-distributed
|
||||
symmetric multiprocessing high-performance ray-tracer,
|
||||
network-distributed framebuffer support, image and signal-processing
|
||||
tools, ray-tracing support for rendering and geometric analysis,
|
||||
path-tracing and photon mapping support for realistic image synthesis,
|
||||
animation capabilities, ray-tracing and numerical processing
|
||||
libraries, a system performance analysis benchmark suite, an embedded
|
||||
scripting interface, and a robust high-performance geometric
|
||||
representation and analysis library.
|
||||
|
||||
|
||||
TABLE OF CONTENTS
|
||||
@@ -22,6 +26,8 @@ TABLE OF CONTENTS
|
||||
Bug Reports/Feature Requests
|
||||
Distribution Details
|
||||
Background Information
|
||||
Future Events
|
||||
Getting Help
|
||||
|
||||
|
||||
GETTING STARTED
|
||||
@@ -33,44 +39,72 @@ contents of the BRL-CAD distribution.
|
||||
Some platforms have additional platform-specific documentation that
|
||||
should be consulted after reading this file:
|
||||
|
||||
doc/README.Windows -- Microsoft Windows
|
||||
doc/README.MacOSX -- Apple Mac OS X
|
||||
doc/README.AIX -- IBM's Advanced Interactive eXecutive OS
|
||||
doc/README.BSD -- FreeBSD, NetBSD, OpenBSD, etc.
|
||||
doc/README.IRIX -- SGI IRIX and IRIX64
|
||||
doc/README.Linux -- Various Linux distributions
|
||||
doc/README.* -- Other platforms, e.g., BSD, VAX
|
||||
doc/README.MacOSX -- Apple Mac OS X
|
||||
doc/README.Solaris -- Oracle Solaris, OpenIndiana (Illumos), etc.
|
||||
doc/README.Windows -- Microsoft Windows
|
||||
|
||||
Information on how to install and run the software, to get involved
|
||||
with development, or to run the performance benchmark test suite are
|
||||
covered in detail in separate standalone documents. For more details
|
||||
on what BRL-CAD provides, consult the main website.
|
||||
The information on how to install and operate the software, to become
|
||||
involved with the development of the package, or to run the benchmark
|
||||
performance test suite have each become sufficiently large that their
|
||||
details are covered in more detail in standalone documents. For more
|
||||
details on what BRL-CAD provides, see the documentation provided on
|
||||
the website at http://brlcad.org/.
|
||||
|
||||
Information relevant to the source code is contained in the HACKING
|
||||
(developer guide) and COPYING (legal overview) files.
|
||||
Information relevant to those interested in the source code is
|
||||
contained in the HACKING and COPYING files. See doc/benchmark.tr file
|
||||
for benchmark suite information. There is a variety of other
|
||||
documentation and information also available in the doc/ directory.
|
||||
|
||||
Note that only sample geometry models are included in public
|
||||
distributions of BRL-CAD. Detailed models are only available through
|
||||
official U.S. Gov't channels, e.g., via Advanced Joint Effectiveness
|
||||
Model (AJEM) support.
|
||||
Please note that this distribution package does not include the
|
||||
various military-specific model analysis tools such as MUVES, GIFT,
|
||||
SAR, SLAVE, VAST, etc., nor does it include any military geometry
|
||||
databases. If you desire to have access to this material, please
|
||||
contact one of the BRL-CAD developers.
|
||||
|
||||
|
||||
COMPILE AND INSTALL
|
||||
-------------------
|
||||
|
||||
In order to compile and install BRL-CAD from a source distribution,
|
||||
the latest CMake ( http://www.cmake.org ), a recent compiler, and at
|
||||
least 3GB of disk space are recommended. More details are available
|
||||
at https://brlcad.org/wiki/Compiling
|
||||
See the INSTALL file for details on configuring, compiling, and
|
||||
installing BRL-CAD. In order to compile and install BRL-CAD from a
|
||||
source distribution, the build tool CMake is required - see the website
|
||||
at http://www.cmake.org for source and binary installers. CMake is also
|
||||
available in many Linux and *BSD distributions.
|
||||
|
||||
Typically, the following steps should result in a successful install:
|
||||
Once CMake is installed, the following steps may be taken for a full
|
||||
default install (starting with a source tarball):
|
||||
|
||||
tar -xvzf brlcad-VERSION.tar.gz
|
||||
mkdir brlcad-VERSION/build
|
||||
cd brlcad-VERSION/build
|
||||
cmake .. -DBRLCAD_ENABLE_STRICT=OFF -DCMAKE_BUILD_TYPE=Release
|
||||
make -j4
|
||||
tar -xvzf brlcad-X.Y.Z.tar.gz
|
||||
mkdir brlcad-build
|
||||
cd brlcad-build
|
||||
cmake ../brlcad-X.Y.Z
|
||||
make
|
||||
make install
|
||||
|
||||
See the included INSTALL text file for explanation of the various
|
||||
cmake configuration options available for building BRL-CAD.
|
||||
where "X.Y.Z" is the version number of BRL-CAD. For those who prefer
|
||||
a curses interface, substitute ccmake for cmake above. If the graphical
|
||||
interface available from CMake is installed cmake-gui may be
|
||||
substituted for cmake. These interfaces will display the various
|
||||
configuration options available when building BRL-CAD, or the options
|
||||
may be set directly via command line -D options.
|
||||
The configure wrapper script may be substituted for cmake in the above
|
||||
steps for a more autotools-like configuration experience.
|
||||
|
||||
Users on multiprocessor systems will be able to speed up their builds
|
||||
by passing the -j option to make (e.g. make -j4, assuming GNU make).
|
||||
|
||||
Once the build completes and assuming you have proper filesystem
|
||||
permissions, you should be able to begin the installation by running
|
||||
the "make install" . By default, the package is configured to install
|
||||
entirely into /usr/brlcad/.
|
||||
|
||||
You will need to add /usr/brlcad/bin to your path (or whatever path the
|
||||
variable CMAKE_INSTALL_PREFIX was set to during configure) in order for
|
||||
the BRL-CAD binaries to be in your path.
|
||||
|
||||
|
||||
BENCHMARK
|
||||
@@ -97,38 +131,78 @@ comparing the results of the benchmark tests in more detail.
|
||||
COMMUNICATION
|
||||
-------------
|
||||
|
||||
There are various BRL-CAD mailing lists available including three
|
||||
You are invited to participate in the InterNet (aka "ARPANET")
|
||||
electronic mailing list on the BRL-CAD software. There are various
|
||||
BRL-CAD mailing lists available on the project website at
|
||||
http://sourceforge.net/mail/?group_id=105292 including three
|
||||
developer-oriented lists, a user list, and a read-only news
|
||||
announcement list:
|
||||
announcement list. See the posted archives to get a feel for the
|
||||
volume of list traffic for each list and to read/search past
|
||||
discussions.
|
||||
|
||||
http://sourceforge.net/mail/?group_id=105292
|
||||
On-line web forums are likewise available on the project site at
|
||||
http://sourceforge.net/forum/?group_id=105292
|
||||
|
||||
For interactive discussion, please join our Zulip chat:
|
||||
A variety of information on BRL-CAD is available via the
|
||||
World-Wide-Web. Papers, documentation, and the software repository
|
||||
may be found at:
|
||||
|
||||
https://brlcad.zulipchat.com
|
||||
http://brlcad.org
|
||||
|
||||
In addition to the above, there is an official BRL-CAD IRC channel on
|
||||
the Freenode network that may be reached by joining #brlcad on
|
||||
irc.freenode.net connecting via port 6667. For first-time users,
|
||||
there is a web-based IRC client available for certain browsers at:
|
||||
|
||||
http://irc.brlcad.org
|
||||
|
||||
IRC is the preferred method of communication to interact with the
|
||||
BRL-CAD developers, to get involved with the project, obtain support,
|
||||
or provide direct feedback.
|
||||
|
||||
|
||||
BUG REPORTS AND FEATURE REQUESTS
|
||||
--------------------------------
|
||||
|
||||
Please submit all bugs, support requests, and feature requests to:
|
||||
Please report any bugs encountered to the project bug tracker at
|
||||
http://sourceforge.net/tracker/?group_id=105292&atid=640802
|
||||
|
||||
https://github.com/BRL-CAD/brlcad/issues
|
||||
Similarly, please post any request for feature enhancements or support
|
||||
request to http://sourceforge.net/tracker/?group_id=105292&atid=640805
|
||||
and http://sourceforge.net/tracker/?group_id=105292&atid=640803
|
||||
respectively.
|
||||
|
||||
|
||||
DISTRIBUTION DETAILS
|
||||
--------------------
|
||||
|
||||
BRL-CAD releases are available at:
|
||||
BRL-CAD is freely available and distributed in both binary and source
|
||||
code form through the BRL-CAD project website on Sourceforge:
|
||||
|
||||
https://github.com/BRL-CAD/brlcad/releases
|
||||
http://sf.net/projects/brlcad/
|
||||
|
||||
Assets stored for each release will always include source archives,
|
||||
and usually binary compilations for commonly used operating systems.
|
||||
The package is similarly available via a Subversion repository. To
|
||||
obtain the latest, follow the directions for anonymous checkout at:
|
||||
|
||||
For developers, BRL-CAD is available via Git version control cloning:
|
||||
http://sourceforge.net/svn/?group_id=105292
|
||||
|
||||
https://github.com/BRL-CAD/brlcad
|
||||
There is also a paid-for full-service support distribution available
|
||||
for those interested through SURVICE Engineering, Inc., and the
|
||||
Survivability/Vulnerability Information Analysis Center (SURVIAC).
|
||||
|
||||
SURVICE provides their own BRL-CAD distribution that comes with
|
||||
commercial support, documentation, and installation media. Full
|
||||
technical assistance is provided to their commercial distributions by
|
||||
phone, FAX, postal mail, or e-mail. Agencies of the Federal
|
||||
Government may acquire the full service distribution with a MIPR or
|
||||
OGA funds transfer.
|
||||
|
||||
For further details, contact:
|
||||
|
||||
BRL-CAD Distribution
|
||||
SURVIAC Aberdeen Satellite Office
|
||||
4695 Millennium Drive
|
||||
Belcamp, MD 210017-1505 USA
|
||||
|
||||
|
||||
BACKGROUND INFORMATION
|
||||
@@ -171,12 +245,44 @@ Linux, and Windows.
|
||||
|
||||
The BRL-CAD package is intentionally designed to be extensively
|
||||
cross-platform and is actively developed on and maintained for many
|
||||
common operating system environments including various BSD
|
||||
distributions, Linux, Solaris, Mac OS X, and Windows. The entire
|
||||
package is distributed in binary and source code form as free open
|
||||
source software (FOSS), provided under Open Source Initiative (OSI)
|
||||
approved license terms. BRL-CAD was released as open source in
|
||||
December 2004. See the COPYING file for more details.
|
||||
common operating system environments including for BSD, IRIX, Linux,
|
||||
Solaris, Mac OS X, and Windows among others. The entire package is
|
||||
distributed in binary and source code form as free open source
|
||||
software (FOSS), provided under Open Source Initiative (OSI) approved
|
||||
license terms. BRL-CAD was released as open source in December 2004.
|
||||
See the COPYING file for more details.
|
||||
|
||||
|
||||
FUTURE EVENTS
|
||||
-------------
|
||||
|
||||
It is expected that new releases of BRL-CAD will be issued
|
||||
approximately once a month. A new release is scheduled for
|
||||
distribution at the beginning of every month, usually being posted
|
||||
sometime within the first week of every month.
|
||||
|
||||
Depending on need, demand, and activity, additional releases may also
|
||||
be made. The additional releases will be heavily dependent upon the
|
||||
level of user involvement and contributions in particular.
|
||||
Information about new releases will be routinely provided by
|
||||
electronic mail to recipients of this software as well as to the
|
||||
BRL-CAD NEWS mailing list:
|
||||
|
||||
http://sourceforge.net/mail/?group_id=105292
|
||||
|
||||
Periodically, training and user group meetings are provided with
|
||||
announcements similarly posted to the BRL-CAD NEWS mailing list.
|
||||
Several BRL-CAD developers also regularly attend the ACM Siggraph
|
||||
conference, the ACM Solid and Physical Modeling conference, and other
|
||||
similar conferences, conventions, and symposiums as well.
|
||||
|
||||
|
||||
GETTING HELP
|
||||
------------
|
||||
|
||||
Feel free to direct any unanswered questions relating to BRL-CAD via
|
||||
e-mail or to any of the other contact means described above in the
|
||||
COMMUNICATIONS section of this document.
|
||||
|
||||
Best Wishes,
|
||||
The BRL-CAD Development Team
|
||||
|
||||
@@ -1,246 +0,0 @@
|
||||
Annotation and view-object rendering notes
|
||||
==========================================
|
||||
|
||||
Scope
|
||||
-----
|
||||
|
||||
BRL-CAD has two related, but deliberately distinct, ways to represent visual
|
||||
markup:
|
||||
|
||||
* An annotation is an ID_ANNOT database primitive. It is persistent model
|
||||
content with enough semantic and presentation information to be reproduced
|
||||
outside the application that created it.
|
||||
* A view object is application-owned scene state. It is useful for interactive
|
||||
construction and manipulation, but is intentionally not backed by a database
|
||||
object.
|
||||
|
||||
They share portions of the interactive display infrastructure, but they do not
|
||||
currently have interchangeable ownership, lifetime, or rendering semantics.
|
||||
|
||||
|
||||
Annotation capabilities
|
||||
-----------------------
|
||||
|
||||
An rt_annot_internal stores a model-space anchor, a set of 2D vertices, and
|
||||
either a model plane basis or screen-space placement. Its segment types cover
|
||||
lines, circular arcs, NURBS, Beziers, text, and filled polygons. Segment style
|
||||
records include a semantic role, line pattern and width, RGBA color, font or
|
||||
symbol, text scaling, and decorative flags.
|
||||
|
||||
The libged annotate command can create styled text, leaders, linear/angular/
|
||||
radius/diameter/ordinate dimensions, and bounding-box autodim groups. It can
|
||||
regenerate derived annotations from saved attributes and associate them with
|
||||
source model objects without making them part of those objects' CSG trees.
|
||||
|
||||
Annotations therefore have the properties needed for persistent markup:
|
||||
|
||||
* database naming, paths, transforms, and instances;
|
||||
* survival across save/reopen and transfer to another application;
|
||||
* semantic segment roles and per-segment presentation data;
|
||||
* model-space and view-dependent screen-space placement; and
|
||||
* high-level generation metadata and source-object associations.
|
||||
|
||||
An annotation is informational coverage, not a CSG solid. The raytracing
|
||||
implementation preserves that distinction. It prepares annotation coverage
|
||||
from active database paths and composites it on primary samples after ordinary
|
||||
geometry has established color and depth. Model-space annotation coverage is
|
||||
occluded by nearer solid geometry. Screen-space annotation coverage uses the
|
||||
render view and image dimensions. Annotations do not acquire artificial
|
||||
volume, alter model bounds, cast shadows, or participate in reflection and
|
||||
refraction rays.
|
||||
|
||||
Visible coverage is returned in back-to-front layers. Model-space layers are
|
||||
ordered by ray distance, followed by view-space layers ordered by projected
|
||||
anchor depth; segment draw order breaks ties within an annotation. This lets
|
||||
the image renderers apply source-over alpha consistently while retaining the
|
||||
single-frontmost-hit query for compatibility. NIRT continues to report one
|
||||
frontmost segment per model-space annotation rather than exposing these
|
||||
presentation layers as solid partitions.
|
||||
|
||||
Color follows normal database tree state. An annotation segment with an
|
||||
explicit RGBA style wins; otherwise it inherits the resolved combination-path
|
||||
color; otherwise it is white. The legacy region-ID color table is not applied
|
||||
to annotation display or coverage, since annotations are informational leaves
|
||||
rather than regions.
|
||||
|
||||
Prepared coverage uses the existing libbg RTree implementation. A 3D RTree
|
||||
culls model-space annotation instances and a 2D local RTree culls segments
|
||||
inside every annotation. Screen-space instance extents cannot be placed in a
|
||||
static world-space index because they change with the view, so those instances
|
||||
remain in a compact list while still using their local segment RTree. This
|
||||
avoids a new spatial data structure and keeps prepared scenes immutable and
|
||||
safe for concurrent sample queries.
|
||||
|
||||
The rt, ART, and ADRT/ISST integrations follow this overlay model. ERT invokes
|
||||
rt with the database, displayed database paths, and view, so database-backed
|
||||
annotations can follow that route as well. ERT does not currently serialize
|
||||
or pass application-owned view objects to its subprocess.
|
||||
|
||||
NIRT keeps annotation diagnostics opt-in. `useannot 1` enables model-space
|
||||
annotation intersections, and the `fmt a` action reports them. Default NIRT
|
||||
output is unchanged. Screen-space annotations are deliberately omitted
|
||||
because a NIRT ray does not define an image size, pixel footprint, or complete
|
||||
model-to-view mapping.
|
||||
|
||||
|
||||
View-object capabilities
|
||||
------------------------
|
||||
|
||||
The core representation is bv_scene_obj. A view set owns shared view objects,
|
||||
and a particular bview can also own local objects. Independent views force
|
||||
local ownership. bv_obj_put recycles objects when their application lifetime
|
||||
ends; the objects are not written to the .g database.
|
||||
|
||||
The `view obj` command exposes the principal markup types:
|
||||
|
||||
* Lines are model-coordinate polylines represented by vlists. Generic scene
|
||||
rendering can add arrowheads to segment ends.
|
||||
* Labels have a model anchor and optional model-space target/leader. Their text
|
||||
is projected and drawn as screen-facing HUD text. If the command omits Z,
|
||||
screen X/Y coordinates are projected onto the current view plane at creation
|
||||
time.
|
||||
* Polygons include general polygons, circles, ellipses, rectangles, and
|
||||
squares. Creation and editing operate on a saved view plane with a view-Z
|
||||
offset. Selection, movement, open/close, area, overlap, and 2D boolean
|
||||
operations are supported. A "fill" is currently a set of hatch lines, not
|
||||
an opaque surface. Polygons can be explicitly imported from or exported to
|
||||
persistent sketch primitives.
|
||||
|
||||
Scene objects also provide object color, transparency, pixel line width, dash
|
||||
style, and arrow dimensions. Not all of these properties have a uniform
|
||||
command interface for every object type.
|
||||
|
||||
There are other visual layers that should not be conflated with these objects.
|
||||
Legacy gv_tcl data/sdata arrows, axes, lines, labels, and polygons have a
|
||||
separate representation. Faceplate/HUD elements are screen UI. Database
|
||||
objects temporarily cloned for editing are also transient, but retain database
|
||||
primitive semantics and live in the database-object scene containers.
|
||||
|
||||
|
||||
Comparison
|
||||
----------
|
||||
|
||||
Both annotations and view objects eventually produce display-manager pixels,
|
||||
often through bv_scene_obj and vlists. That common final path does not make
|
||||
their source representations equivalent.
|
||||
|
||||
Annotations are the canonical choice when markup must be saved, named in a
|
||||
database, instanced, shared, raytraced from a .g file, or understood by another
|
||||
program. View objects are the right choice for application/session state that
|
||||
must be created and manipulated without changing the database.
|
||||
|
||||
Some view objects have a direct annotation analogue, but conversion is not
|
||||
lossless without type-aware logic:
|
||||
|
||||
* A view polyline maps naturally to line segments, including arrowhead style.
|
||||
* A polygon outline and its hatch lines can map to annotation coverage, but the
|
||||
existing view "fill" must not silently become an opaque filled polygon.
|
||||
* A label is hybrid. Its target and leader are model-space geometry while its
|
||||
glyphs remain screen-facing at a projected model anchor.
|
||||
* Arbitrary vlist extraction is insufficient because display-matrix commands,
|
||||
point and line sizes, child objects, glyph behavior, and semantic roles are
|
||||
otherwise lost or ambiguous.
|
||||
|
||||
View-object line width and annotation line width also need an explicit unit
|
||||
policy. View-object widths are display pixels. Screen-space annotation widths
|
||||
are view-dependent coverage widths. A model-space annotation's line_width is
|
||||
used as a scale on the automatically selected model-space stroke width. In
|
||||
other words, removing a separate raytracer "stroke-width" setting does not
|
||||
remove width control: the annotation's existing line_width/`--line-width`
|
||||
style remains the single user-facing control. The renderer interprets it in
|
||||
the appropriate coordinate system rather than exposing a second competing
|
||||
knob.
|
||||
|
||||
|
||||
Recommended transient rendering design
|
||||
--------------------------------------
|
||||
|
||||
Do not make librt or the raytracers depend on bv_scene_obj, libbv application
|
||||
containers, or libged. Do not manufacture tubes, TGCs, meshes, or geometry
|
||||
just in front of the view plane. Artificial geometry would affect bounds,
|
||||
depth, shadows, and secondary rays, and would make antialiasing and perspective
|
||||
behavior depend on a fabricated distance from the eye.
|
||||
|
||||
If transient view objects need to appear in raytraced output, use an explicit
|
||||
application-to-renderer snapshot boundary:
|
||||
|
||||
1. The GED/application layer snapshots selected live view objects when a render
|
||||
is launched. This is the only layer that owns their lifetime and semantics.
|
||||
2. A type-aware adapter in libged or libbv translates supported objects into a
|
||||
renderer-neutral overlay/coverage description. It should reuse annotation
|
||||
coverage preparation through an in-memory annotation-instance interface,
|
||||
rather than duplicate line, glyph, and arrow intersection algorithms.
|
||||
3. The snapshot travels with the exact view state: model-to-view transform,
|
||||
perspective, image width and height, and sampling convention. In-process
|
||||
renderers can receive it directly; subprocess rt/ERT needs an explicit
|
||||
serialized side channel.
|
||||
4. Raytracers composite this coverage only on primary image samples, after
|
||||
geometry color and depth are known. It remains outside CSG, model bounds,
|
||||
shadows, reflections, and refractions.
|
||||
5. Initial support should be deliberately finite: polyline strokes and
|
||||
arrowheads, label glyphs and leaders, polygon outlines, and polygon hatches.
|
||||
Faceplate elements and legacy gv_tcl overlays should be separately specified
|
||||
opt-in layers rather than being included accidentally.
|
||||
6. Snapshot records should preserve object name and type, RGBA, visibility,
|
||||
local/shared ownership, presentation units, and source identity. Unsupported
|
||||
object types should produce a deliberate diagnostic or documented omission.
|
||||
|
||||
Application-side compositing of the interactive display-manager layer over an
|
||||
ERT framebuffer is a viable smaller feature if only ERT screen captures need
|
||||
view objects. It would closely reproduce the interactive view, but it would
|
||||
not make the objects available to standalone rt, ART, or ISST output and should
|
||||
not be presented as the general renderer solution.
|
||||
|
||||
Conversion between the two systems should remain explicit. Automatically
|
||||
turning view objects into database annotations would violate their deliberately
|
||||
transient contract. A user command to promote selected view markup to a
|
||||
persistent annotation would be reasonable; polygon-to-sketch export is an
|
||||
existing precedent. Conversely, a view-object editor may be used as a front
|
||||
end for constructing an annotation, provided the persistence action is clear.
|
||||
|
||||
|
||||
Maintenance findings before implementing the adapter
|
||||
----------------------------------------------------
|
||||
|
||||
Several representation issues should be corrected before type-driven snapshot
|
||||
conversion is relied upon:
|
||||
|
||||
* Container-selection flags (BV_DB_OBJS, BV_VIEW_OBJS, BV_LOCAL_OBJS, and
|
||||
BV_CHILD_OBJS) reuse numeric bits also used for semantic s_type_flags
|
||||
(BV_DBOBJ_BASED, BV_VIEWONLY, BV_LINES, and others). bv_obj_create currently
|
||||
assigns its type argument to s_type_flags. A local view object consequently
|
||||
acquires BV_LINES incidentally, while the line command does not explicitly
|
||||
tag lines. The namespaces should be separated and every object explicitly
|
||||
typed.
|
||||
* Lines, labels, and polygons should have unambiguous type tags and per-type
|
||||
lifecycle/extraction callbacks. Snapshot conversion must inspect typed data,
|
||||
not infer semantics from a rendered vlist.
|
||||
* Label construction should initialize every bv_label field deliberately,
|
||||
including size, line_flag, anchor, arrow, and target. Current construction
|
||||
does not establish all of those values on every path.
|
||||
* The status of legacy gv_tcl overlay data should be decided explicitly:
|
||||
migrate it, support it through a separate adapter, or document its exclusion.
|
||||
* Screen-space annotation display and raytrace units need a parity test. The
|
||||
legacy display-matrix vlist path and the ray coverage path currently express
|
||||
screen offsets through different mechanisms; their apparent agreement must
|
||||
be verified rather than assumed.
|
||||
* Per-segment annotation colors exceed the legacy interactive vlist object's
|
||||
single-color model. Uniform annotate-command colors work today, but true
|
||||
multicolor interactive parity may require split scene objects or a richer
|
||||
display representation.
|
||||
|
||||
Tests for a future adapter should cover shared and local ownership, cleanup,
|
||||
label anchors and leaders, polygon holes/hatches/view-Z, perspective, pixel
|
||||
width, model-space occlusion, screen-space overlay, and serialization across
|
||||
the ERT subprocess boundary.
|
||||
|
||||
|
||||
Conclusion
|
||||
----------
|
||||
|
||||
Persistent annotations and transient view objects should continue to coexist.
|
||||
The annotation coverage scene is the correct renderer-side abstraction for
|
||||
both saved annotations and a future snapshot of transient markup. The
|
||||
application should perform the semantic conversion and transfer a view-complete
|
||||
snapshot; the renderer should treat it as primary-ray coverage, never as
|
||||
invented scene geometry.
|
||||
+48
-76
@@ -1,102 +1,74 @@
|
||||
add_subdirectory(ref)
|
||||
|
||||
add_definitions(-DCONSOLE)
|
||||
include_directories(${BU_INCLUDE_DIRS})
|
||||
|
||||
brlcad_addexec(pixcmp pixcmp.c libbu)
|
||||
brlcad_add_test(
|
||||
NAME bench_pixcmp_tolerance
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} "-DPIXCMP=$<TARGET_FILE:pixcmp>" "-DTEST_DIR=${CMAKE_CURRENT_BINARY_DIR}"
|
||||
-P "${CMAKE_CURRENT_SOURCE_DIR}/pixcmp_test.cmake"
|
||||
)
|
||||
set(BARK_SOURCES benchmark.c compute.c run.c clean.c)
|
||||
brlcad_addexec(bark "${BARK_SOURCES}" "libbu;${M_LIBRARY}" NO_STRICT NO_INSTALL TEST_USESDATA)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
configure_file(run.sh "${CMAKE_CURRENT_BINARY_DIR}/benchmark" COPYONLY)
|
||||
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/benchmark" DESTINATION ${BIN_DIR})
|
||||
endif(BUILD_TESTING)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/benchmark")
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/benchmark-done
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/run.sh $<TARGET_FILE_DIR:bark>/benchmark
|
||||
COMMAND "${CMAKE_COMMAND}" -E touch ${CMAKE_CURRENT_BINARY_DIR}/benchmark-done
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/run.sh
|
||||
add_definitions(
|
||||
-DHAVE_CONFIG_H
|
||||
-DBRLCADBUILD
|
||||
-DCONSOLE
|
||||
)
|
||||
add_custom_target(benchmark_cp ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/benchmark-done)
|
||||
set_target_properties(benchmark_cp PROPERTIES FOLDER "Benchmark")
|
||||
endif(BUILD_TESTING)
|
||||
distclean(${CMAKE_BINARY_DIR}/${BIN_DIR}/benchmark)
|
||||
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"---\")\n")
|
||||
file(
|
||||
APPEND
|
||||
"${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake"
|
||||
"message(\"Run 'make benchmark-clean' in the bench directory to delete the logic\")\n"
|
||||
)
|
||||
file(
|
||||
APPEND
|
||||
"${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake"
|
||||
"message(\"and image files generated during the benchmark analysis.\")\n"
|
||||
BRLCAD_ADDEXEC(pixcmp pixcmp.c libbu)
|
||||
set(BARK_SOURCES
|
||||
benchmark.c
|
||||
compute.c
|
||||
run.c
|
||||
clean.c
|
||||
)
|
||||
BRLCAD_ADDEXEC(bark "${BARK_SOURCES}" libbu NO_STRICT NO_INSTALL)
|
||||
|
||||
cmakefiles(
|
||||
configure_file(run.sh "${CMAKE_CURRENT_BINARY_DIR}/benchmark" COPYONLY)
|
||||
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/benchmark" DESTINATION ${BIN_DIR})
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
|
||||
string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
|
||||
configure_file(run.sh ${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/bin/benchmark COPYONLY)
|
||||
endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
configure_file(run.sh ${CMAKE_BINARY_DIR}/bin/benchmark COPYONLY)
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"---\")\n")
|
||||
file(APPEND "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"Run 'make benchmark-clean' in the bench directory to delete the logic\")\n")
|
||||
file(APPEND "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"and image files generated during the benchmark analysis.\")\n")
|
||||
|
||||
CMAKEFILES(
|
||||
CMakeLists.txt
|
||||
pixcmp_test.cmake
|
||||
lgt.sh
|
||||
run.sh
|
||||
try.sh
|
||||
viewdiff.sh
|
||||
)
|
||||
)
|
||||
|
||||
if(SH_EXEC AND TARGET m35.g AND BUILD_TESTING)
|
||||
if(SH_EXEC)
|
||||
# CTest enabled short run of the benchmark suite
|
||||
brlcad_add_test(NAME benchmark COMMAND ${SH_EXEC} "$<TARGET_FILE_DIR:bark>/benchmark" run TIMEFRAME=1)
|
||||
add_test(NAME benchmark COMMAND ${SH_EXEC} "${CMAKE_BINARY_DIR}/bin/benchmark" run TIMEFRAME=1)
|
||||
set_tests_properties(benchmark PROPERTIES LABELS "Benchmark")
|
||||
add_custom_target(
|
||||
benchmark-check
|
||||
add_custom_target(benchmark-check
|
||||
COMMAND ${CMAKE_CTEST_COMMAND} -L Benchmark --output-on-failure
|
||||
DEPENDS rt pixcmp BENCHMARK_PIX_cp PIX_LOG_cp benchmark_cp
|
||||
)
|
||||
add_dependencies(
|
||||
benchmark-check
|
||||
bldg391.g
|
||||
m35.g
|
||||
moss.g
|
||||
sphflake.g
|
||||
star.g
|
||||
world.g
|
||||
)
|
||||
set_target_properties(benchmark-check PROPERTIES FOLDER "Benchmark")
|
||||
DEPENDS rt pixcmp BENCHMARK_PIX_cp PIX_LOG_cp
|
||||
)
|
||||
add_dependencies(benchmark-check bldg391.g m35.g moss.g sphflake.g star.g world.g)
|
||||
if(TARGET check)
|
||||
add_dependencies(check benchmark-check)
|
||||
endif(TARGET check)
|
||||
|
||||
# Full run of the benchmark suite
|
||||
add_custom_target(
|
||||
benchmark
|
||||
COMMAND ${SH_EXEC} $<TARGET_FILE_DIR:bark>/benchmark run
|
||||
add_custom_target(benchmark
|
||||
COMMAND ${SH_EXEC} ${CMAKE_BINARY_DIR}/bin/benchmark run
|
||||
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake"
|
||||
DEPENDS rt pixcmp BENCHMARK_PIX_cp PIX_LOG_cp benchmark_cp
|
||||
)
|
||||
add_dependencies(
|
||||
benchmark
|
||||
bldg391.g
|
||||
m35.g
|
||||
moss.g
|
||||
sphflake.g
|
||||
star.g
|
||||
world.g
|
||||
)
|
||||
set_target_properties(benchmark PROPERTIES FOLDER "Benchmark")
|
||||
DEPENDS rt pixcmp BENCHMARK_PIX_cp PIX_LOG_cp
|
||||
)
|
||||
add_dependencies(benchmark bldg391.g m35.g moss.g sphflake.g star.g world.g)
|
||||
|
||||
# benchmark cleanup targets
|
||||
add_custom_target(benchmark-clean ${SH_EXEC} ${CMAKE_BINARY_DIR}/bin/benchmark clean)
|
||||
set_target_properties(benchmark-clean PROPERTIES FOLDER "Benchmark")
|
||||
add_custom_target(benchmark-clobber ${SH_EXEC} ${CMAKE_BINARY_DIR}/bin/benchmark clobber)
|
||||
set_target_properties(benchmark-clobber PROPERTIES FOLDER "Benchmark")
|
||||
endif(SH_EXEC AND TARGET m35.g AND BUILD_TESTING)
|
||||
add_custom_target(benchmark-clean
|
||||
${SH_EXEC} ${CMAKE_BINARY_DIR}/bin/benchmark clean
|
||||
)
|
||||
add_custom_target(benchmark-clobber
|
||||
${SH_EXEC} ${CMAKE_BINARY_DIR}/bin/benchmark clobber
|
||||
)
|
||||
endif(SH_EXEC)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
+22
-29
@@ -1,7 +1,7 @@
|
||||
/* B E N C H M A R K . C
|
||||
* BRL-CAD
|
||||
*
|
||||
* Copyright (c) 2011-2026 United States Government as represented by
|
||||
* Copyright (c) 2011-2020 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -67,7 +67,7 @@
|
||||
int bu_exec(const char *program, void *data, struct bu_vls *out, struct bu_vls *err) {if (!program || !out || !err || !data) return 1; return 0;}
|
||||
int bu_grep(const char *pattern, const char *input, int(*callback)(const char *line, void *data), void *data) {if (!pattern || !input || !data) return 1; if (!callback) bu_log("TODO: need default callback!!!\n"); return 0;}
|
||||
int bu_file_glob(const char *pattern, char **paths) {if (!pattern || !paths) return 1; return 0;}
|
||||
const char *format_elapsed(double elapsed) {if (elapsed > 0) return "0 1 2"; return "-0 -1 -2";}
|
||||
char *format_elapsed(double elapsed) {if (elapsed > 0) return "0 1 2"; return "-0 -1 -2";}
|
||||
int perf(const struct bu_vls *vp, const char *items, const char *args[]) {if (!vp || !items || !args) return -1; return 0;}
|
||||
double calculate_vgr(const struct bu_vls *summary) {if (!summary) return -0.0; return 0.0;}
|
||||
extern int bench(const char *cmd);
|
||||
@@ -97,7 +97,6 @@ record(const char *fmt, ...)
|
||||
if (!BU_STR_EQUAL(LOGFILE, "")) {
|
||||
FILE *fp = fopen(LOGFILE, "a");
|
||||
fprintf(fp, "%s", bu_vls_addr(&str));
|
||||
fclose(fp);
|
||||
}
|
||||
if (bu_str_false(QUIET)) {
|
||||
bu_log("%s", bu_vls_addr(&str));
|
||||
@@ -217,16 +216,14 @@ look_for(void (*verbose)(const char *, ...), look_for_type_t type, const char *l
|
||||
static void
|
||||
set_if_unset(void (*echo)(const char *, ...), void (*verbose)(const char *, ...), const char *var, const char *val)
|
||||
{
|
||||
const char *setval = getenv(var);
|
||||
|
||||
if (!var || !val) {
|
||||
return;
|
||||
}
|
||||
|
||||
const char *setval = getenv(var);
|
||||
|
||||
if (!echo) {
|
||||
echo = sink;
|
||||
}
|
||||
|
||||
if (!verbose) {
|
||||
verbose = sink;
|
||||
}
|
||||
@@ -237,7 +234,7 @@ set_if_unset(void (*echo)(const char *, ...), void (*verbose)(const char *, ...)
|
||||
}
|
||||
|
||||
setval = getenv(var);
|
||||
echo("Using [%s] for %s\n", setval ? setval : "", var);
|
||||
echo("Using [%s] for %s\n", setval, var);
|
||||
}
|
||||
|
||||
|
||||
@@ -393,7 +390,7 @@ main(int ac, char *av[])
|
||||
bu_log("well-known datasets into 512x512 images where performance metrics are\n");
|
||||
bu_log("documented and fairly well understood. The local machine's\n");
|
||||
bu_log("performance is compared to the base system (called VGR) and a numeric\n");
|
||||
bu_log("\"VGR\" multiplier of performance is computed. This number is a\n");
|
||||
bu_log("\"VGR\" mulitplier of performance is computed. This number is a\n");
|
||||
bu_log("simplified metric from which one may qualitatively compare cpu and\n");
|
||||
bu_log("cache performance, versions of BRL-CAD, and different compiler\n");
|
||||
bu_log("characteristics.\n");
|
||||
@@ -433,7 +430,7 @@ main(int ac, char *av[])
|
||||
bu_log("effectively performing a multiplier amount of work over the initial\n");
|
||||
bu_log("frame.\n");
|
||||
bu_log("\n");
|
||||
bu_log("Please send your BRL-CAD Benchmark results to the developers along with\n");
|
||||
bu_log("Plese send your BRL-CAD Benchmark results to the developers along with\n");
|
||||
bu_log("detailed system information to <devs@brlcad.org>. Include at least:\n");
|
||||
bu_log("\n");
|
||||
bu_log(" 0) Compiler name and version (e.g. gcc --version)\n");
|
||||
@@ -482,10 +479,6 @@ main(int ac, char *av[])
|
||||
j = bu_argv_from_string(pattern, 4, bu_vls_addr(&pattern_str));
|
||||
while (j > 0) {
|
||||
num = bu_file_glob(pattern[j-1], paths);
|
||||
if (!num || !paths || !paths[0]) {
|
||||
j--;
|
||||
continue;
|
||||
}
|
||||
cnt = num;
|
||||
while (num > 0) {
|
||||
bu_file_delete(paths[num-1]);
|
||||
@@ -506,10 +499,8 @@ main(int ac, char *av[])
|
||||
num = bu_file_glob("benchmark-[0-9]*-run.log", paths);
|
||||
cnt = num;
|
||||
while (num > 0) {
|
||||
if (paths) {
|
||||
bu_log("rm -f %s\n", paths[num-1]);
|
||||
bu_file_delete(paths[num-1]);
|
||||
}
|
||||
bu_log("rm -f %s\n", paths[num-1]);
|
||||
bu_file_delete(paths[num-1]);
|
||||
num--;
|
||||
}
|
||||
bu_argv_free(cnt, paths);
|
||||
@@ -530,8 +521,7 @@ main(int ac, char *av[])
|
||||
bu_log("\nThe following files must be removed manually:\n");
|
||||
printed=1;
|
||||
}
|
||||
if (paths)
|
||||
bu_log("%s ", paths[num-1]);
|
||||
bu_log("%s ", paths[num-1]);
|
||||
num--;
|
||||
}
|
||||
bu_argv_free(cnt, paths);
|
||||
@@ -562,7 +552,7 @@ main(int ac, char *av[])
|
||||
{
|
||||
int fd;
|
||||
const char *logfile;
|
||||
bu_vls_printf(&str, "run-%d-benchmark.log", bu_pid());
|
||||
bu_vls_printf(&str, "run-%d-benchmark.log", bu_process_id());
|
||||
logfile = bu_vls_addr(&str);
|
||||
bu_setenv("LOGFILE", logfile, 1);
|
||||
fd = open(logfile, O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR);
|
||||
@@ -589,7 +579,6 @@ main(int ac, char *av[])
|
||||
{
|
||||
struct bu_vls v = BU_VLS_INIT_ZERO;
|
||||
char rfc2822[1024] = {0};
|
||||
const char *logfile = getenv("LOGFILE");
|
||||
#ifdef HAVE_SYS_UTSNAME_H
|
||||
struct utsname n;
|
||||
time_t t = time(NULL);
|
||||
@@ -605,7 +594,7 @@ main(int ac, char *av[])
|
||||
echo("B R L - C A D B E N C H M A R K\n");
|
||||
echo("=================================\n");
|
||||
echo("Running %s on %s\n", av[0], rfc2822);
|
||||
echo("Logging output to %s\n", logfile ? logfile : "disabled");
|
||||
echo("Logging output to %s\n", getenv("LOGFILE"));
|
||||
echo("%s\n\n", bu_vls_addr(&v));
|
||||
}
|
||||
|
||||
@@ -654,7 +643,6 @@ main(int ac, char *av[])
|
||||
bu_setenv("PIX", bu_path_dirname(getenv("PIX")), 1);
|
||||
}
|
||||
|
||||
const char *pix_env = getenv("PIX");
|
||||
bu_vls_printf(&vp,
|
||||
"%s "
|
||||
"%s "
|
||||
@@ -663,7 +651,7 @@ main(int ac, char *av[])
|
||||
"%s/../../pix "
|
||||
"%s/../../../pix "
|
||||
"./pix",
|
||||
pix_env ? pix_env : "", pix, thisp, thisp, thisp, thisp);
|
||||
getenv("PIX"), pix, thisp, thisp, thisp, thisp);
|
||||
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
|
||||
look_for(verbose_echo, directory, "a benchmark reference log directory", "LOG", (const char **)argv);
|
||||
bu_vls_trunc(&vp, 0);
|
||||
@@ -693,6 +681,11 @@ main(int ac, char *av[])
|
||||
look_for(verbose_echo, script, "a time elapsed utility", "ELP", (const char **)argv);
|
||||
bu_vls_trunc(&vp, 0);
|
||||
|
||||
bu_free(root, "strdup root");
|
||||
bu_free(db, "strdup db");
|
||||
bu_free(pix, "strdup pix");
|
||||
|
||||
|
||||
/*********************
|
||||
* output parameters *
|
||||
*********************/
|
||||
@@ -746,10 +739,8 @@ main(int ac, char *av[])
|
||||
/* approximate maximum time in seconds that a given test is allowed to take */
|
||||
set_if_unset(echo, verbose_echo, "MAXTIME", "300");
|
||||
{
|
||||
char *mtimestr = getenv("MAXTIME");
|
||||
MAXTIME = (mtimestr) ? strtol(mtimestr, NULL, 0) : 300;
|
||||
char *timeframestr = getenv("TIMEFRAME");
|
||||
TIMEFRAME = (timeframestr) ? strtol(timeframestr, NULL, 0) : 32;
|
||||
MAXTIME = strtol(getenv("MAXTIME"), NULL, 0);
|
||||
TIMEFRAME = strtol(getenv("TIMEFRAME"), NULL, 0);
|
||||
if (MAXTIME < TIMEFRAME) {
|
||||
bu_exit(1, "ERROR: MAXTIME must be greater or equal to TIMEFRAME\n");
|
||||
}
|
||||
@@ -930,6 +921,8 @@ main(int ac, char *av[])
|
||||
thisp, thisp, thisp, thisp, thisp, thisp);
|
||||
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
|
||||
|
||||
bu_free(thisp, "dirname this");
|
||||
|
||||
look_for(NULL, file, "BENCHMARK_TR", "benchmark", (const char **)argv);
|
||||
bu_vls_trunc(&vp, 0);
|
||||
|
||||
|
||||
+4
-5
@@ -1,7 +1,7 @@
|
||||
/* C L E A N . C
|
||||
* BRL-CAD
|
||||
*
|
||||
* Copyright (c) 2011-2026 United States Government as represented by
|
||||
* Copyright (c) 2011-2020 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -46,8 +46,7 @@
|
||||
|
||||
|
||||
/* TODO: !!! needed */
|
||||
//int bu_file_move(const char *fn1, const char *fn2) {if (!fn1 || !fn2) return -1; return 0;}
|
||||
|
||||
int bu_file_move(const char *fn1, const char *fn2) {if (!fn1 || !fn2) return -1; return 0;}
|
||||
extern int bu_file_copy(const char *fn1, const char *fn2);
|
||||
|
||||
|
||||
@@ -70,7 +69,7 @@ clean_obstacles(const char *base_filename, int id)
|
||||
if (bu_file_exists(bu_vls_cstr(&vpid), NULL)) {
|
||||
bu_file_delete(bu_vls_cstr(&vp));
|
||||
}
|
||||
//bu_file_move(bu_vls_cstr(&vp), bu_vls_cstr(&vpid));
|
||||
bu_file_move(bu_vls_cstr(&vp), bu_vls_cstr(&vpid));
|
||||
}
|
||||
|
||||
/* look for a log file */
|
||||
@@ -80,7 +79,7 @@ clean_obstacles(const char *base_filename, int id)
|
||||
if (bu_file_exists(bu_vls_cstr(&vpid), NULL)) {
|
||||
bu_file_delete(bu_vls_cstr(&vp));
|
||||
}
|
||||
//bu_file_move(bu_vls_cstr(&vp), bu_vls_cstr(&vpid));
|
||||
bu_file_move(bu_vls_cstr(&vp), bu_vls_cstr(&vpid));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/* C O M P U T E . C
|
||||
* BRL-CAD
|
||||
*
|
||||
* Copyright (c) 2011-2026 United States Government as represented by
|
||||
* Copyright (c) 2011-2020 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
||||
Executable
+198
@@ -0,0 +1,198 @@
|
||||
#!/bin/sh
|
||||
# L G T . S H
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2004-2020 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
###
|
||||
# A Shell script to test LGT
|
||||
# @(#)$Header$ (BRL)
|
||||
|
||||
# Ensure /bin/sh
|
||||
export PATH || (echo "This isn't sh."; sh $0 $*; kill $$)
|
||||
path_to_lgt_sh=`dirname $0`
|
||||
|
||||
expected="$path_to_lgt_sh/../src/lgt/lgt"
|
||||
if ! test -f "$expected" ; then
|
||||
echo "Can't find LGT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# force locale setting to C so things like date output as expected
|
||||
LC_ALL=C
|
||||
|
||||
LGT="$expected"
|
||||
DB="$path_to_lgt_sh/../db"
|
||||
|
||||
CMP="$path_to_lgt_sh/pixcmp"
|
||||
if test ! -f $CMP ; then
|
||||
cake pixcmp
|
||||
fi
|
||||
|
||||
# Alliant NFS hack
|
||||
if test x${MACHINE} = xfx ; then
|
||||
cp ${LGT} /tmp/lgt
|
||||
cp ${CMP} /tmp/pixcmp
|
||||
LGT=/tmp/lgt
|
||||
CMP=/tmp/pixcmp
|
||||
fi
|
||||
|
||||
# This test of LGT assumes a "live" framebuffer here.
|
||||
if test x$FB_FILE = x ; then
|
||||
echo "Environment variable FB_FILE must be set to a real framebuffer"
|
||||
echo "for this test of LGT to operate correctly."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run the first set of tests
|
||||
|
||||
${LGT} ${DB}/lgt-test.g all.g << EOF
|
||||
# read light source data base
|
||||
v ../db/lgt-test.ldb
|
||||
# read material data base
|
||||
w ../db/lgt-test.mdb
|
||||
# force display window to be 512x512 pixels, should cause 8-to-1 zoom
|
||||
T 512
|
||||
# clear frame buffer
|
||||
E
|
||||
# set maximum bounces to 20
|
||||
K 20
|
||||
# turn hidden-line drawing off
|
||||
k 0
|
||||
# configure grid: 64 rays across
|
||||
G 64 0 0 0.0
|
||||
# turn perspective off
|
||||
p 0
|
||||
# change background to mauve
|
||||
b 111 66 66
|
||||
# read key frame
|
||||
j ../db/lgt-test.key
|
||||
# display view #3
|
||||
R
|
||||
# save image in file
|
||||
H lgt3a.pix
|
||||
# change frame buffer to disk file
|
||||
o lgt3b.pix
|
||||
# save a script of previous commands, to produce the "b" version.
|
||||
S script3
|
||||
# disable reading of key frame file
|
||||
j
|
||||
# change frame buffer back to default
|
||||
o
|
||||
# configure grid: 2.45 mm cells, centered about model origin, view size 225 mm
|
||||
G 2.45 1 1 225.0
|
||||
# change background to firebrick
|
||||
b 142 35 35
|
||||
# force frame buffer size to be 455 pixels across, should cause 4-to-1 zoom
|
||||
T 455
|
||||
# set automatic perspective at 0.25
|
||||
p 0.25
|
||||
# set anti-aliasing over-sampling factor to 2
|
||||
A 2
|
||||
# set maximum bounces to 20
|
||||
K 20
|
||||
# display view #1
|
||||
R
|
||||
# save image in file
|
||||
H lgt1a.pix
|
||||
# change frame buffer to disk file
|
||||
o lgt1b.pix
|
||||
# save a script
|
||||
S script1
|
||||
# change frame buffer back to default
|
||||
o
|
||||
# turn off anti-aliasing
|
||||
A 1
|
||||
# revert to auto-sizing of frame buffer
|
||||
T 0
|
||||
# set automatic perspective at 0.25
|
||||
p 0.25
|
||||
# select hidden-line drawing, reverse video
|
||||
k 2
|
||||
# configure grid: 128 rays across, centered at model RPP, view size 225mm
|
||||
G 128 0 0 225.0
|
||||
# display view #2
|
||||
R
|
||||
# save image in file
|
||||
H lgt2a.pix
|
||||
# change frame buffer to disk file
|
||||
o lgt2b.pix
|
||||
# save a script
|
||||
S script2
|
||||
# change frame buffer back to default
|
||||
o
|
||||
# bye
|
||||
q
|
||||
EOF
|
||||
if test $? = 0 ; then
|
||||
:
|
||||
else
|
||||
echo "Abnormal lgt exit"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run the second set of tests. The scripts were created above.
|
||||
./script1 < /dev/null &&
|
||||
./script2 < /dev/null &&
|
||||
./script3 < /dev/null || { echo "Script test failed."; exit 1; }
|
||||
|
||||
FAIL=0
|
||||
for i in 1 2 3 ; do
|
||||
if ${CMP} "$path_to_lgt_sh/../pix/lgt${i}.pix" lgt${i}a.pix ; then
|
||||
:
|
||||
else
|
||||
echo "Test $i A failed."
|
||||
FAIL=1
|
||||
fi
|
||||
if ${CMP} "$path_to_lgt_sh/../pix/lgt${i}.pix" lgt${i}b.pix
|
||||
then
|
||||
:
|
||||
else
|
||||
echo "Test $i B failed."
|
||||
FAIL=1
|
||||
fi
|
||||
done
|
||||
if test "$FAIL" -eq 0 ; then
|
||||
echo "LGT Tested OK."
|
||||
exit 0
|
||||
fi
|
||||
echo "*** LGT does NOT work on this platform ***"
|
||||
exit 2
|
||||
|
||||
# Local Variables:
|
||||
# mode: sh
|
||||
# tab-width: 8
|
||||
# sh-indentation: 4
|
||||
# sh-basic-offset: 4
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=4 tabstop=8
|
||||
+118
-292
@@ -1,7 +1,7 @@
|
||||
/* P I X C M P . C
|
||||
* BRL-CAD
|
||||
*
|
||||
* Copyright (c) 2004-2026 United States Government as represented by
|
||||
* Copyright (c) 2004-2020 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -36,17 +36,6 @@
|
||||
#endif
|
||||
#include "bio.h"
|
||||
|
||||
// TODO - replace with std::filesystem::is_fifo
|
||||
#ifndef S_ISFIFO
|
||||
# ifdef S_IFIFO
|
||||
# define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
|
||||
# else
|
||||
# define S_ISFIFO(mode) (0)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include "bu/app.h"
|
||||
#include "bu/getopt.h"
|
||||
#include "bu/log.h"
|
||||
#include "bu/file.h"
|
||||
@@ -57,59 +46,39 @@
|
||||
#define FILE_ERROR 126
|
||||
|
||||
/* exit codes for normal operation */
|
||||
#define EXIT_OFF_BY_NONE 0
|
||||
#define EXIT_OFF_BY_ONE 1
|
||||
#define EXIT_OFF_BY_MANY 2
|
||||
|
||||
enum diff {
|
||||
MATCHING,
|
||||
OFF_BY_ONE,
|
||||
OFF_BY_MANY,
|
||||
MISSING
|
||||
};
|
||||
#define OFF_BY_NONE 0
|
||||
#define OFF_BY_ONE 1
|
||||
#define OFF_BY_MANY 2
|
||||
|
||||
|
||||
static void
|
||||
HIDDEN void
|
||||
usage(const char *name)
|
||||
{
|
||||
const char *unknown = "pixcmp";
|
||||
if (!name) {
|
||||
name = unknown;
|
||||
}
|
||||
|
||||
/* split to fit within ISO C90 max static string length < 509 chars */
|
||||
bu_log("Usage: %s [OPTIONS] FILE1 [FILE2 [SKIP1 [SKIP2]]]\n"
|
||||
"\n"
|
||||
" Compare two PIX files pixel by pixel (or byte by byte), optionally"
|
||||
" skipping initial pixels (or bytes) in one or both input files.\n"
|
||||
"\n", name);
|
||||
bu_log("Options:"
|
||||
" -b Iterate and print by bytes instead of by pixels.\n"
|
||||
" -s Print all that have the same matching values.\n"
|
||||
" -d Print all that have different values.\n"
|
||||
" -q Quiet. Suppress printing header and summary.\n"
|
||||
/* this must be split, ISO C90 has a max static string length of 509 */
|
||||
bu_log("Usage: %s [OPTIONS] FILE1 [FILE2 [SKIP1 [SKIP2]]]\n%s", name,
|
||||
"Compare two PIX image files pixel by pixel.\n\n"
|
||||
" -l List pixel numbers and values for all pixels that differ.\n"
|
||||
" -b Output and process by bytes instead of pixels.\n"
|
||||
" -i SKIP\n"
|
||||
" Discard initial SKIP pixels (or bytes w/ -b) in FILE1 and FILE2 input.\n"
|
||||
" -i SKIP1:SKIP2\n"
|
||||
" Skip initial SKIP1 pixels (or bytes w/ -b) in FILE1 and SKIP2 in FILE2.\n"
|
||||
" -n COUNT\n"
|
||||
" Compare COUNT pixels (or bytes w/ -b). Stops by default at EOF.\n"
|
||||
"\n");
|
||||
bu_log("If either FILE is `-' or is missing, then input is read from standard input.\n"
|
||||
"If FILE1 and FILE2 are both standard input, then values must be interleaved.\n"
|
||||
"If the `-b' option is used, SKIP and COUNT values are bytes instead of pixels.\n"
|
||||
"Pixel numbers and bytes are indexed linearly from one.\n"
|
||||
"\n");
|
||||
" Skip the first SKIP pixels of input (for FILE1 and FILE2)\n");
|
||||
bu_log(" -i SKIP1:SKIP2\n"
|
||||
" Skip the first SKIP1 pixels in FILE1 and SKIP2 pixels in FILE2.\n"
|
||||
" -s Silent output. Only return an exit status.\n\n"
|
||||
"If FILE is `-' or is missing, then input is read from standard input.\n"
|
||||
"If the `-b' option is used, SKIP values are bytes instead of pixels.\n"
|
||||
"Pixel numbers and bytes are indexed linearly from one.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
handle_range_opt(const char *arg, size_t *skip1, size_t *skip2)
|
||||
HIDDEN void
|
||||
handle_i_opt(const char *arg, size_t *skip1, size_t *skip2)
|
||||
{
|
||||
const char *endptr = arg;
|
||||
long val;
|
||||
|
||||
if ((arg == NULL) || ((skip1 == NULL) && (skip2 == NULL))) {
|
||||
/* nothing to do */
|
||||
return;
|
||||
@@ -121,14 +90,12 @@ handle_range_opt(const char *arg, size_t *skip1, size_t *skip2)
|
||||
/* probably empty string */
|
||||
if (skip2) {
|
||||
endptr++;
|
||||
val = strtol(endptr, NULL, 10);
|
||||
*skip2 = (val < 0) ? 0 : val;
|
||||
*skip2 = strtol(endptr, NULL, 10);
|
||||
}
|
||||
} else if ((endptr == NULL) || (endptr[0] == '\0')) {
|
||||
/* no : found */
|
||||
if (skip2) {
|
||||
val = strtol(arg, NULL, 10);
|
||||
*skip2 = (val < 0) ? 0 : val;
|
||||
*skip2 = strtol(arg, NULL, 10);
|
||||
}
|
||||
if (skip1 && skip2) {
|
||||
*skip1 = *skip2;
|
||||
@@ -136,13 +103,11 @@ handle_range_opt(const char *arg, size_t *skip1, size_t *skip2)
|
||||
} else if (endptr[0] == ':') {
|
||||
/* found : */
|
||||
if (skip1) {
|
||||
val = strtol(arg, NULL, 10);
|
||||
*skip1 = (val < 0) ? 0 : val;
|
||||
*skip1 = strtol(arg, NULL, 10);
|
||||
}
|
||||
if (skip2) {
|
||||
endptr++; /* skip over : */
|
||||
val = strtol(endptr, NULL, 10);
|
||||
*skip2 = (val < 0) ? 0 : val;
|
||||
*skip2 = strtol(endptr, NULL, 10);
|
||||
}
|
||||
} else {
|
||||
bu_exit(OPTS_ERROR, "Unexpected input processing [%s]\n", arg);
|
||||
@@ -150,114 +115,43 @@ handle_range_opt(const char *arg, size_t *skip1, size_t *skip2)
|
||||
}
|
||||
|
||||
|
||||
static enum diff
|
||||
compare_rgb(int r1, int g1, int b1, int r2, int g2, int b2, size_t *matching, size_t *off1, size_t *offmany, size_t *missing)
|
||||
{
|
||||
enum diff result = MISSING;
|
||||
|
||||
if ((r1 == r2 && r1 != -1)
|
||||
&& (g1 == g2 && g1 != -1)
|
||||
&& (b1 == b2 && b1 != -1))
|
||||
{
|
||||
result = MATCHING;
|
||||
} else if (r1 == -1 || r2 == -1 || g1 == -1 || g2 == -1 || b1 == -1 || b2 == -1) {
|
||||
/* image sizes don't match (or other I/O error) */
|
||||
result = MISSING;
|
||||
} else {
|
||||
/* at least this */
|
||||
result = OFF_BY_ONE;
|
||||
|
||||
/* but maybe more */
|
||||
if (r1 != r2) {
|
||||
if ((r1 > r2 ? r1 - r2 : r2 - r1) > 1) {
|
||||
result = OFF_BY_MANY;
|
||||
}
|
||||
}
|
||||
if (g1 != g2) {
|
||||
if ((g1 > g2 ? g1 - g2 : g2 - g1) > 1) {
|
||||
result = OFF_BY_MANY;
|
||||
}
|
||||
}
|
||||
if (b1 != b2) {
|
||||
if ((b1 > b2 ? b1 - b2 : b2 - b1) > 1) {
|
||||
result = OFF_BY_MANY;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (result == OFF_BY_ONE) {
|
||||
(*off1)++;
|
||||
} else if (result == OFF_BY_MANY) {
|
||||
(*offmany)++;
|
||||
} else if (result == MATCHING) {
|
||||
(*matching)++;
|
||||
} else {
|
||||
(*missing)++;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
const char *argv0 = argv[0];
|
||||
|
||||
FILE *f1 = NULL;
|
||||
FILE *f2 = NULL;
|
||||
struct stat sf1;
|
||||
struct stat sf2;
|
||||
|
||||
memset(&sf1, 0, sizeof(struct stat));
|
||||
memset(&sf2, 0, sizeof(struct stat));
|
||||
struct stat sf1, sf2;
|
||||
|
||||
size_t matching = 0;
|
||||
size_t off1 = 0;
|
||||
size_t offmany = 0;
|
||||
size_t missing = 0;
|
||||
|
||||
int c;
|
||||
int list_diff = 0;
|
||||
int list_same = 0;
|
||||
int list_pixel_values = 0;
|
||||
int print_bytes = 0;
|
||||
int quiet = 0;
|
||||
|
||||
size_t bytes = 0;
|
||||
int silent = 0;
|
||||
size_t f1_skip = 0;
|
||||
size_t f2_skip = 0;
|
||||
size_t stop_after = 0;
|
||||
|
||||
bu_setprogname(argv[0]);
|
||||
size_t bytes = 0;
|
||||
|
||||
/* process opts */
|
||||
while ((c = bu_getopt(argc, argv, "sdbi:n:q?")) != -1) {
|
||||
while ((c = bu_getopt(argc, argv, "lbi:s")) != -1) {
|
||||
switch (c) {
|
||||
case 's':
|
||||
list_same = 1;
|
||||
break;
|
||||
case 'd':
|
||||
list_diff = 1;
|
||||
case 'l':
|
||||
list_pixel_values = 1;
|
||||
break;
|
||||
case 'b':
|
||||
print_bytes = 1;
|
||||
break;
|
||||
case 'i':
|
||||
handle_range_opt(bu_optarg, &f1_skip, &f2_skip);
|
||||
handle_i_opt(bu_optarg, &f1_skip, &f2_skip);
|
||||
break;
|
||||
case 'n':
|
||||
{
|
||||
long num = strtol(bu_optarg, NULL, 10);
|
||||
stop_after = (num < 0) ? 0 : num;
|
||||
case 's':
|
||||
silent = 1;
|
||||
break;
|
||||
}
|
||||
case 'q':
|
||||
quiet = 1;
|
||||
break;
|
||||
case '?':
|
||||
case 'h':
|
||||
usage(argv0);
|
||||
return 0;
|
||||
default:
|
||||
bu_log("\n");
|
||||
usage(argv[0]);
|
||||
exit(OPTS_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -267,17 +161,17 @@ main(int argc, char *argv[])
|
||||
/* validate what is left over */
|
||||
if (argc < 1 || argc > 4) {
|
||||
bu_log("ERROR: incorrect number of arguments provided\n\n");
|
||||
usage(argv0);
|
||||
usage(argv[0]);
|
||||
exit(OPTS_ERROR);
|
||||
}
|
||||
if ((argc > 0 && !argv[0]) || (argc > 1 && !argv[1])) {
|
||||
bu_log("ERROR: bad filename\n\n");
|
||||
usage(argv0);
|
||||
usage(argv[0]);
|
||||
exit(OPTS_ERROR);
|
||||
}
|
||||
if ((argc > 2 && !argv[2]) || (argc > 3 && !argv[3])) {
|
||||
bu_log("ERROR: bad skip value\n\n");
|
||||
usage(argv0);
|
||||
usage(argv[0]);
|
||||
exit(OPTS_ERROR);
|
||||
}
|
||||
|
||||
@@ -289,25 +183,10 @@ main(int argc, char *argv[])
|
||||
} else {
|
||||
snprintf(range, 64, "%s", argv[2]);
|
||||
}
|
||||
handle_range_opt(range, &f1_skip, &f2_skip);
|
||||
handle_i_opt(range, &f1_skip, &f2_skip);
|
||||
}
|
||||
|
||||
if (!print_bytes) {
|
||||
if ((f1_skip > ((size_t)-1)/3)
|
||||
|| (f2_skip > ((size_t)-1)/3))
|
||||
{
|
||||
bu_log("ERROR: overflow, -i skip value(s) are too big {%zu:%zu}\n", f1_skip, f2_skip);
|
||||
exit(OPTS_ERROR);
|
||||
}
|
||||
f1_skip *= 3;
|
||||
f2_skip *= 3;
|
||||
if (stop_after > ((size_t)-1)/3)
|
||||
{
|
||||
bu_log("ERROR: overflow, -n number is too big {%zu}\n", stop_after);
|
||||
exit(OPTS_ERROR);
|
||||
}
|
||||
stop_after *= 3;
|
||||
}
|
||||
/* printf("Skip from FILE1: %ld and from FILE2: %ld\n", f1_skip, f2_skip); */
|
||||
|
||||
if (BU_STR_EQUAL(argv[0], "-")) {
|
||||
f1 = stdin;
|
||||
@@ -315,7 +194,6 @@ main(int argc, char *argv[])
|
||||
perror(argv[0]);
|
||||
exit(FILE_ERROR);
|
||||
}
|
||||
|
||||
if ((argc < 2) || BU_STR_EQUAL(argv[1], "-")) {
|
||||
f2 = stdin;
|
||||
} else if ((f2 = fopen(argv[1], "rb")) == NULL) {
|
||||
@@ -323,165 +201,108 @@ main(int argc, char *argv[])
|
||||
exit(FILE_ERROR);
|
||||
}
|
||||
|
||||
setmode(fileno(stdin), O_BINARY);
|
||||
/* we're writing out ascii */
|
||||
/* setmode(fileno(stdout), O_BINARY); */
|
||||
stat(argv[0], &sf1);
|
||||
stat(argv[1], &sf2);
|
||||
|
||||
if (f1_skip != f2_skip && f1 == stdin && f2 == stdin) {
|
||||
bu_exit(OPTS_ERROR, "ERROR: cannot skip the same input stream by different amounts\n");
|
||||
if (sf1.st_size != sf2.st_size) {
|
||||
bu_exit(FILE_ERROR, "Different file sizes found: %s(%d) and %s(%d). Cannot perform pixcmp.\n", argv[0], (int)sf1.st_size, argv[1], (int)sf2.st_size);
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
if (fstat(fileno(f1), &sf1)) {
|
||||
bu_log("Warning - f1 fstat failed: %s\n", strerror(errno));
|
||||
if (!print_bytes) {
|
||||
f1_skip *= 3;
|
||||
f2_skip *= 3;
|
||||
}
|
||||
errno = 0;
|
||||
if (fstat(fileno(f2), &sf2)) {
|
||||
bu_log("Warning - f2 fstat failed: %s\n", strerror(errno));
|
||||
}
|
||||
|
||||
/* bu_log("FILE1_size(%zu) FILE1_skip(%zu) FILE2_size(%zu) FILE2_skip(%zu)\n", (size_t)sf1.st_size, f1_skip, (size_t)sf2.st_size, f2_skip); */
|
||||
|
||||
if (!quiet && ((sf1.st_size - f1_skip) != (sf2.st_size - f2_skip))) {
|
||||
bu_log("WARNING: Different image sizes detected\n");
|
||||
if (print_bytes) {
|
||||
bu_log("\t%s: %7zu bytes (%8zu bytes, skipping %7zu)\n",
|
||||
argv[0], (size_t)sf1.st_size - f1_skip, (size_t)sf1.st_size, f1_skip);
|
||||
bu_log("\t%s: %7zu bytes (%8zu bytes, skipping %7zu)\n",
|
||||
argv[1], (size_t)sf2.st_size - f2_skip, (size_t)sf2.st_size, f2_skip);
|
||||
} else {
|
||||
bu_log("\t%s: %7zu pixels (%8zu bytes, skipping %7zu)\n",
|
||||
argv[0], ((size_t)sf1.st_size - f1_skip)/3, (size_t)sf1.st_size, f1_skip);
|
||||
bu_log("\t%s: %7zu pixels (%8zu bytes, skipping %7zu)\n",
|
||||
argv[1], ((size_t)sf2.st_size - f2_skip)/3, (size_t)sf2.st_size, f2_skip);
|
||||
}
|
||||
}
|
||||
|
||||
/* make sure we read all bytes */
|
||||
if (stop_after == 0) {
|
||||
stop_after = FMAX((sf1.st_size - f1_skip), (sf2.st_size - f2_skip));
|
||||
if (f1 == stdin && f2 == stdin) {
|
||||
/* dual stdin is interleaved */
|
||||
stop_after = (stop_after+1)/2;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
bu_log("mode is [%d] and [%d]\n", S_ISFIFO(sf1.st_mode), S_ISFIFO(sf2.st_mode));
|
||||
bu_log("tty is [%d] and [%d]\n", isatty(fileno(f1)), isatty(fileno(f2)));
|
||||
*/
|
||||
|
||||
/* skip requested pixels/bytes in FILE1 */
|
||||
if (f1_skip) {
|
||||
if (S_ISFIFO(sf1.st_mode)) {
|
||||
size_t skipped = 0;
|
||||
for (skipped = 0; skipped < f1_skip; skipped++) {
|
||||
(void)fgetc(f1);
|
||||
}
|
||||
} else if (fseek(f1, (long)f1_skip, SEEK_SET)) {
|
||||
bu_log("ERROR: Unable to seek %zd %s%s in FILE1\n",
|
||||
f1_skip,
|
||||
print_bytes?"byte":"pixel",
|
||||
f1_skip==1?"":"s");
|
||||
perror("FILE1 fseek failure");
|
||||
exit(FILE_ERROR);
|
||||
}
|
||||
if (f1_skip && fseek(f1, f1_skip, SEEK_SET)) {
|
||||
bu_log("ERROR: Unable to seek %zd %s%s in FILE1\n",
|
||||
f1_skip,
|
||||
print_bytes?"byte":"pixel",
|
||||
f1_skip==1?"":"s");
|
||||
perror("FILE1 fseek failure");
|
||||
exit(FILE_ERROR);
|
||||
}
|
||||
|
||||
/* skip requested pixels in FILE2 */
|
||||
if (f2_skip) {
|
||||
if (S_ISFIFO(sf2.st_mode)) {
|
||||
size_t skipped = 0;
|
||||
for (skipped = 0; skipped < f2_skip; skipped++) {
|
||||
(void)fgetc(f2);
|
||||
}
|
||||
} else if (fseek(f2, (long)f2_skip, SEEK_SET)) {
|
||||
bu_log("ERROR: Unable to seek %zd %s%s in FILE2\n",
|
||||
f2_skip,
|
||||
print_bytes?"byte":"pixel",
|
||||
f2_skip==1?"":"s");
|
||||
perror("FILE2 fseek failure");
|
||||
exit(FILE_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
/* print header to stderr, output to stdout */
|
||||
if (!quiet && (list_same || list_diff)) {
|
||||
if (print_bytes) {
|
||||
bu_log("#Byte FILE1 FILE2 LABEL\n");
|
||||
} else {
|
||||
bu_log("#Pixel\t(FILE1 R, G, B) (FILE2 R, G, B)\n");
|
||||
}
|
||||
if (f2_skip && fseek(f2, f2_skip, SEEK_SET)) {
|
||||
bu_log("ERROR: Unable to seek %zd %s%s in FILE2\n",
|
||||
f1_skip,
|
||||
print_bytes?"byte":"pixel",
|
||||
f1_skip==1?"":"s");
|
||||
perror("FILE2 fseek failure");
|
||||
exit(FILE_ERROR);
|
||||
}
|
||||
|
||||
/* iterate over the pixels/bytes in the files */
|
||||
while (bytes < stop_after) {
|
||||
enum diff result;
|
||||
int r1 = -1;
|
||||
int r2 = -1;
|
||||
int g1 = -1;
|
||||
int g2 = -1;
|
||||
int b1 = -1;
|
||||
int b2 = -1;
|
||||
|
||||
/* bu_log("\tbytes[%zu] < stop[%zu\n", bytes, stop_after); */
|
||||
while ((!feof(f1) && !feof(f2)) &&
|
||||
(!ferror(f1) && !ferror(f2))) {
|
||||
register int r1, r2, g1, g2, b1, b2;
|
||||
r1 = r2 = g1 = g2 = b1 = b2 = -1;
|
||||
|
||||
r1 = fgetc(f1);
|
||||
r2 = fgetc(f2);
|
||||
if (feof(f1) || feof(f2)) break;
|
||||
bytes++;
|
||||
|
||||
if (print_bytes) {
|
||||
/* replicate */
|
||||
b1 = g1 = 0;
|
||||
b2 = g2 = 0;
|
||||
} else {
|
||||
if (!print_bytes) {
|
||||
g1 = fgetc(f1);
|
||||
g2 = fgetc(f2);
|
||||
if (feof(f1) || feof(f2)) break;
|
||||
bytes++;
|
||||
b1 = fgetc(f1);
|
||||
b2 = fgetc(f2);
|
||||
if (feof(f1) || feof(f2)) break;
|
||||
bytes++;
|
||||
}
|
||||
|
||||
result = compare_rgb(r1, g1, b1, r2, g2, b2, &matching, &off1, &offmany, &missing);
|
||||
if ((r1 == r2) && (g1 == g2) && (b1 == b2)) {
|
||||
matching++;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* print them? */
|
||||
if ((result==MATCHING && list_same)
|
||||
|| (result!=MATCHING && list_diff))
|
||||
{
|
||||
const char *label = NULL;
|
||||
switch (result) {
|
||||
case MATCHING:
|
||||
label = "MATCHING";
|
||||
break;
|
||||
case OFF_BY_MANY:
|
||||
label = "OFF_BY_MANY";
|
||||
break;
|
||||
case OFF_BY_ONE:
|
||||
label = "OFF_BY_ONE";
|
||||
break;
|
||||
case MISSING:
|
||||
default:
|
||||
label = "MISSING";
|
||||
break;
|
||||
/* tabulate differing pixels */
|
||||
if (((r1 != r2) && (g1 == g2) && (b1 == b2)) ||
|
||||
((r1 == r2) && (g1 != g2) && (b1 == b2)) ||
|
||||
((r1 == r2) && (g1 == g2) && (b1 != b2))) {
|
||||
/* off by one channel */
|
||||
if (r1 != r2) {
|
||||
if ((r1 > r2 ? r1 - r2 : r2 - r1) > 1) {
|
||||
offmany++;
|
||||
} else {
|
||||
off1++;
|
||||
}
|
||||
} else if (g1 != g2) {
|
||||
if ((g1 > g2 ? g1 - g2 : g2 - g1) > 1) {
|
||||
offmany++;
|
||||
} else {
|
||||
off1++;
|
||||
}
|
||||
} else if (b1 != b2) {
|
||||
if ((b1 > b2 ? b1 - b2 : b2 - b1) > 1) {
|
||||
offmany++;
|
||||
} else {
|
||||
off1++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* off by many */
|
||||
offmany++;
|
||||
}
|
||||
|
||||
/* they're different, so print something */
|
||||
if (list_pixel_values) {
|
||||
if (print_bytes) {
|
||||
printf("%zu %3d %3d %s\n", bytes, r1, r2, label);
|
||||
printf("%ld %3d %3d\n", bytes, r1, r2);
|
||||
} else {
|
||||
printf("%zu\t(%3d, %3d, %3d)\t(%3d, %3d, %3d) %s\n", bytes / 3, r1, g1, b1, r2, g2, b2, label);
|
||||
printf("%ld\t(%3d, %3d, %3d)\t(%3d, %3d, %3d)\n", bytes / 3, r1, g1, b1, r2, g2, b2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* print summary */
|
||||
if (!quiet) {
|
||||
printf("pixcmp %s: %8zd matching, %8zd off by 1, %8zd off by many",
|
||||
print_bytes?"bytes":"pixels", matching, off1, offmany);
|
||||
if (missing) {
|
||||
printf(", %8zd missing\n", missing);
|
||||
} else {
|
||||
printf("\n");
|
||||
}
|
||||
if (!silent) {
|
||||
printf("pixcmp %s: %8zd matching, %8zd off by 1, %8zd off by many\n",
|
||||
print_bytes?"bytes":"pixels",
|
||||
matching, off1, offmany);
|
||||
}
|
||||
|
||||
/* check for errors */
|
||||
@@ -490,16 +311,21 @@ main(int argc, char *argv[])
|
||||
return FILE_ERROR;
|
||||
}
|
||||
|
||||
/* if files were of different lengths, consider it an error */
|
||||
if (feof(f1) != feof(f2)) {
|
||||
return FILE_ERROR;
|
||||
}
|
||||
|
||||
/* indicate how many differences there were overall */
|
||||
if (offmany || missing) {
|
||||
return EXIT_OFF_BY_MANY;
|
||||
if (offmany) {
|
||||
return OFF_BY_MANY;
|
||||
}
|
||||
if (off1) {
|
||||
return EXIT_OFF_BY_ONE;
|
||||
return OFF_BY_ONE;
|
||||
}
|
||||
|
||||
/* Success! */
|
||||
return EXIT_OFF_BY_NONE;
|
||||
return OFF_BY_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
# Exercise pixcmp's pixel tolerance and exit-status contract with small,
|
||||
# deliberately readable byte streams.
|
||||
|
||||
if(NOT PIXCMP OR NOT TEST_DIR)
|
||||
message(FATAL_ERROR "PIXCMP and TEST_DIR are required")
|
||||
endif()
|
||||
|
||||
function(check_pixcmp name input1 input2 expected_status expected_summary)
|
||||
set(file1 "${TEST_DIR}/pixcmp_${name}_1.pix")
|
||||
set(file2 "${TEST_DIR}/pixcmp_${name}_2.pix")
|
||||
|
||||
file(WRITE "${file1}" "${input1}")
|
||||
file(WRITE "${file2}" "${input2}")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${PIXCMP}" ${ARGN} "${file1}" "${file2}"
|
||||
OUTPUT_VARIABLE output
|
||||
ERROR_VARIABLE errors
|
||||
RESULT_VARIABLE status
|
||||
)
|
||||
|
||||
file(REMOVE "${file1}" "${file2}")
|
||||
|
||||
if(NOT "${status}" STREQUAL "${expected_status}")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"${name}: pixcmp returned ${status}, expected ${expected_status}\nstdout: ${output}\nstderr: ${errors}"
|
||||
)
|
||||
endif()
|
||||
|
||||
string(REGEX REPLACE "[ \t\r\n]+" " " normalized_output "${output}")
|
||||
string(STRIP "${normalized_output}" normalized_output)
|
||||
string(FIND "${normalized_output}" "${expected_summary}" summary_position)
|
||||
if(summary_position EQUAL -1)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"${name}: expected summary '${expected_summary}'\nactual stdout: ${output}\nstderr: ${errors}"
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
set(exact_pixel "pixcmp pixels: 1 matching, 0 off by 1, 0 off by many")
|
||||
set(tolerated_pixel "pixcmp pixels: 0 matching, 1 off by 1, 0 off by many")
|
||||
set(rejected_pixel "pixcmp pixels: 0 matching, 0 off by 1, 1 off by many")
|
||||
|
||||
check_pixcmp(exact "ABC" "ABC" 0 "${exact_pixel}")
|
||||
check_pixcmp(one_channel_within_tolerance "ABC" "BBC" 1 "${tolerated_pixel}")
|
||||
check_pixcmp(two_channels_within_tolerance "ABC" "BCC" 1 "${tolerated_pixel}")
|
||||
check_pixcmp(three_channels_within_tolerance "ABC" "@CB" 1 "${tolerated_pixel}")
|
||||
|
||||
# Keep the tolerated channel first in two cases to catch short-circuiting that
|
||||
# would fail to inspect a later channel outside the tolerance.
|
||||
check_pixcmp(red_outside_tolerance "ABC" "CCD" 2 "${rejected_pixel}")
|
||||
check_pixcmp(green_outside_tolerance "ABC" "BDD" 2 "${rejected_pixel}")
|
||||
check_pixcmp(blue_outside_tolerance "ABC" "BCE" 2 "${rejected_pixel}")
|
||||
|
||||
check_pixcmp(
|
||||
missing_pixel
|
||||
"ABC"
|
||||
"ABCDEF"
|
||||
2
|
||||
"pixcmp pixels: 1 matching, 0 off by 1, 0 off by many, 1 missing"
|
||||
)
|
||||
|
||||
check_pixcmp(
|
||||
byte_within_tolerance
|
||||
"A"
|
||||
"B"
|
||||
1
|
||||
"pixcmp bytes: 0 matching, 1 off by 1, 0 off by many"
|
||||
-b
|
||||
)
|
||||
check_pixcmp(
|
||||
byte_outside_tolerance
|
||||
"A"
|
||||
"C"
|
||||
2
|
||||
"pixcmp bytes: 0 matching, 0 off by 1, 1 off by many"
|
||||
-b
|
||||
)
|
||||
+10
-11
@@ -1,29 +1,28 @@
|
||||
set(
|
||||
BENCHMARK_PIX
|
||||
set(BENCHMARK_PIX
|
||||
bldg391.pix
|
||||
m35.pix
|
||||
moss.pix
|
||||
sphflake.pix
|
||||
star.pix
|
||||
world.pix
|
||||
)
|
||||
)
|
||||
|
||||
set(
|
||||
PIX_LOG
|
||||
|
||||
set(PIX_LOG
|
||||
bldg391.log
|
||||
m35.log
|
||||
moss.log
|
||||
sphflake.log
|
||||
star.log
|
||||
world.log
|
||||
)
|
||||
)
|
||||
|
||||
brlcad_adddata(BENCHMARK_PIX pix)
|
||||
brlcad_adddata(PIX_LOG pix)
|
||||
BRLCAD_ADDDATA(BENCHMARK_PIX pix)
|
||||
BRLCAD_ADDDATA(PIX_LOG pix)
|
||||
|
||||
cmakefiles(${BENCHMARK_PIX})
|
||||
cmakefiles(${PIX_LOG})
|
||||
cmakefiles(CMakeLists.txt)
|
||||
CMAKEFILES(${BENCHMARK_PIX})
|
||||
CMAKEFILES(${PIX_LOG})
|
||||
CMAKEFILES(CMakeLists.txt)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
+4
-6
@@ -1,7 +1,7 @@
|
||||
/* R U N . C
|
||||
* BRL-CAD
|
||||
*
|
||||
* Copyright (c) 2011-2026 United States Government as represented by
|
||||
* Copyright (c) 2011-2020 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -67,14 +67,12 @@ run(int ac, char *av[])
|
||||
const char *run_geomname = av[0];
|
||||
const char *run_geometry = av[1];
|
||||
long int hypersample = strtod(av[2], NULL);
|
||||
struct bu_vls args = BU_VLS_INIT_ZERO;
|
||||
av += 3;
|
||||
ac -= 3;
|
||||
|
||||
{
|
||||
struct bu_vls args = bu_argv_to_string(ac, (const char **)av);
|
||||
echo("DEBUG: Running %s -B -M -s512 -H%ld -J0 %s -o %s.pix %s/%s.g %s\n", av[0], hypersample, args, run_geomname, run_geomname, run_geometry);
|
||||
bu_vls_free(&args);
|
||||
}
|
||||
args = bu_argv_to_string(ac, (const char **)av);
|
||||
echo("DEBUG: Running %s -B -M -s512 -H%ld -J0 %s -o %s.pix %s/%s.g %s\n", av[0], hypersample, args, run_geomname, run_geomname, run_geometry);
|
||||
|
||||
/* pipe(stdin_for_bu_exec); */
|
||||
retval = bu_exec("program", NULL, NULL, NULL);
|
||||
|
||||
+45
-86
@@ -2,7 +2,7 @@
|
||||
# R U N . S H
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2004-2026 United States Government as represented by
|
||||
# Copyright (c) 2004-2020 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
@@ -70,29 +70,25 @@ LC_ALL=C
|
||||
|
||||
# commands that this script expects
|
||||
for __cmd in echo pwd ; do
|
||||
out=`echo "test" | $__cmd 2>&1`
|
||||
echo "test" | $__cmd > /dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
echo "INTERNAL ERROR: $__cmd command is required"
|
||||
echo " (output was [$out])"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
out=`echo "test" | grep "test" 2>&1`
|
||||
echo "test" | grep "test" > /dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
echo "INTERNAL ERROR: grep command is required"
|
||||
echo " (output was [$out])"
|
||||
exit 1
|
||||
fi
|
||||
out=`echo "test" | tr "test" "test" 2>&1`
|
||||
echo "test" | tr "test" "test" > /dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
echo "INTERNAL ERROR: tr command is required"
|
||||
echo " (output was [$out])"
|
||||
exit 1
|
||||
fi
|
||||
out=`echo "test" | sed "s/test/test/" 2>&1`
|
||||
echo "test" | sed "s/test/test/" > /dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
echo "INTERNAL ERROR: sed command is required"
|
||||
echo " (output was [$out])"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -105,13 +101,6 @@ case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
|
||||
*) ECHO_N= ECHO_C='\c' ECHO_T= ;;
|
||||
esac
|
||||
|
||||
# Use a local cache
|
||||
BU_DIR_CACHE="`pwd`/cache-$$-benchmark"
|
||||
rm -rf $BU_DIR_CACHE && mkdir $BU_DIR_CACHE
|
||||
export BU_DIR_CACHE
|
||||
LIBRT_CACHE="`pwd`/rtcache-$$-benchmark"
|
||||
rm -rf $LIBRT_CACHE && mkdir $LIBRT_CACHE
|
||||
export LIBRT_CACHE
|
||||
|
||||
#######################
|
||||
# log to tty and file #
|
||||
@@ -402,14 +391,12 @@ fi
|
||||
|
||||
# where to write results
|
||||
LOGFILE=run-$$-benchmark.log
|
||||
if test -e $LOGFILE ; then
|
||||
echo "WARNING: $LOGFILE already exists. Appending."
|
||||
else
|
||||
touch "$LOGFILE"
|
||||
fi
|
||||
touch "$LOGFILE"
|
||||
if test ! -w "$LOGFILE" ; then
|
||||
echo "WARNING: Unable to log to $LOGFILE"
|
||||
LOGFILE=
|
||||
if test ! "x$LOGFILE" = "x/dev/null" ; then
|
||||
echo "ERROR: Unable to log to $LOGFILE"
|
||||
fi
|
||||
LOGFILE=/dev/null
|
||||
fi
|
||||
|
||||
VERBOSE_ECHO=:
|
||||
@@ -428,13 +415,7 @@ fi
|
||||
$ECHO "B R L - C A D B E N C H M A R K"
|
||||
$ECHO "================================="
|
||||
$ECHO "Running $THIS on `date`"
|
||||
if test "x$LOGFILE" != "x" ; then
|
||||
$ECHO "Logging output to $LOGFILE"
|
||||
elif test "x$QUIET" != "x" ; then
|
||||
$ECHO "Logging output to STDOUT"
|
||||
else
|
||||
$ECHO "Logging output is OFF"
|
||||
fi
|
||||
$ECHO "Logging output to $LOGFILE"
|
||||
$ECHO "`uname -a 2>&1`"
|
||||
$ECHO
|
||||
|
||||
@@ -603,11 +584,8 @@ else
|
||||
$ECHO "Using [$ELP] for ELP"
|
||||
fi
|
||||
|
||||
# stop git shell & msys2 arg manipulation
|
||||
export MSYS_NO_PATHCONV=1 MSYS2_ARG_CONV_EXCL="-F/dev/debug"
|
||||
|
||||
# sanity check: make sure $RT runs
|
||||
out=`eval \"$RT\" -s1 -F/dev/debug \"${DB}/moss.g\" LIGHT 2>&1`
|
||||
# more sanity checks, make sure the binaries and scripts run
|
||||
eval \"$RT\" -s1 -F/dev/debug \"${DB}/moss.g\" LIGHT > /dev/null 2>&1
|
||||
ret=$?
|
||||
if test ! "x${ret}" = "x0" ; then
|
||||
$ECHO
|
||||
@@ -615,27 +593,25 @@ if test ! "x${ret}" = "x0" ; then
|
||||
"$RT"
|
||||
$ECHO
|
||||
$ECHO "ERROR: RT does not seem to work as expected"
|
||||
$ECHO " (returned $ret, output was [$out])"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# sanity check: make sure $CMP runs
|
||||
out=`eval \"$CMP\" - - 2>&1 <<EOF
|
||||
EOF`
|
||||
# create a temporary file named "null", fopen("/dev/null") does not work on
|
||||
# windows (using cygwin), so punt.
|
||||
> null
|
||||
eval \"$CMP\" null null >/dev/null 2>&1
|
||||
rm -f null
|
||||
|
||||
ret=$?
|
||||
if test ! "x${ret}" = "x0" ; then
|
||||
$ECHO
|
||||
$ECHO "ERROR: CMP does not seem to work as expected"
|
||||
$ECHO " (returned $ret, output was [$out])"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# sanity check: make sure $ELP runs
|
||||
out=`eval \"$ELP\" 0 2>&1`
|
||||
eval \"$ELP\" 0 > /dev/null 2>&1
|
||||
if test ! "x${ret}" = "x0" ; then
|
||||
$ECHO
|
||||
$ECHO "ERROR: ELP does not seem to work as expected"
|
||||
$ECHO " (returned $ret, output was [$out])"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
@@ -695,8 +671,7 @@ $ECHO
|
||||
|
||||
|
||||
# if expr works, let the user know about how long this might take
|
||||
zero=`expr 1 - 1 2>&1`
|
||||
if test "x$zero" = "x0" ; then
|
||||
if test "x`expr 1 - 1 2>/dev/null`" = "x0" ; then
|
||||
mintime="`expr 6 \* $TIMEFRAME`"
|
||||
if test $mintime -lt 1 ; then
|
||||
mintime=0 # zero is okay
|
||||
@@ -718,7 +693,6 @@ if test "x$zero" = "x0" ; then
|
||||
$ECHO
|
||||
else
|
||||
$ECHO "WARNING: expr is unavailable, unable to compute statistics"
|
||||
$ECHO " (output of 1 - 1 was [$zero])"
|
||||
$ECHO
|
||||
fi
|
||||
|
||||
@@ -750,9 +724,9 @@ run ( ) {
|
||||
\"${DB}/${run_geomname}.g\" ${run_geometry} 1>&2 <<EOF
|
||||
$run_view
|
||||
EOF
|
||||
run_retval=$?
|
||||
$VERBOSE_ECHO "DEBUG: Running $RT returned $run_retval"
|
||||
return $run_retval
|
||||
retval=$?
|
||||
$VERBOSE_ECHO "DEBUG: Running $RT returned $retval"
|
||||
return $retval
|
||||
}
|
||||
|
||||
|
||||
@@ -885,13 +859,13 @@ sqrt ( ) {
|
||||
if test "x$sqrt_number" = "x" ; then
|
||||
$ECHO "ERROR: cannot compute the square root of nothing" 1>&2
|
||||
exit 1
|
||||
elif test $sqrt_number -lt 0 ; then
|
||||
elif test $sqrt_number -lt 0 > /dev/null 2>&1 ; then
|
||||
$ECHO "ERROR: square root of negative numbers is only in your imagination" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sqrt_have_dc=yes
|
||||
out=`echo "1 1 + p" | dc 2>&1`
|
||||
echo "1 1 + p" | dc >/dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
sqrt_have_dc=no
|
||||
fi
|
||||
@@ -901,7 +875,7 @@ sqrt ( ) {
|
||||
sqrt_root=`echo "$sqrt_number v p" | dc`
|
||||
else
|
||||
sqrt_have_bc=yes
|
||||
out=`echo "1 + 1" | bc 2>&1`
|
||||
echo "1 + 1" | bc >/dev/null 2>&1
|
||||
if test ! "x$?" = "x0" ; then
|
||||
sqrt_have_bc=no
|
||||
fi
|
||||
@@ -986,7 +960,6 @@ bench ( ) {
|
||||
bench_frame=0
|
||||
bench_rtfms=""
|
||||
bench_percent=100
|
||||
bench_retval=0
|
||||
bench_start_time="`date '+%H %M %S'`"
|
||||
bench_overall_elapsed=-1
|
||||
|
||||
@@ -1010,10 +983,7 @@ $bench_view
|
||||
start $bench_frame;
|
||||
end;
|
||||
EOF
|
||||
bench_raytrace_retval=$?
|
||||
if test $bench_raytrace_retval != 0 ; then
|
||||
bench_retval=$bench_raytrace_retval
|
||||
fi
|
||||
retval=$?
|
||||
|
||||
if test $bench_frame -ne 0 ; then
|
||||
if test -f ${bench_testname}.pix.$bench_frame ; then
|
||||
@@ -1087,7 +1057,7 @@ EOF
|
||||
fi
|
||||
|
||||
# did we fail?
|
||||
if test $bench_raytrace_retval != 0 ; then
|
||||
if test $retval != 0 ; then
|
||||
$ECHO "RAYTRACE ERROR"
|
||||
break
|
||||
fi
|
||||
@@ -1153,33 +1123,26 @@ EOF
|
||||
fi
|
||||
$VERBOSE_ECHO "DEBUG: $CMP $PIX/${bench_testname}.pix ${bench_testname}.pix"
|
||||
cmp_result="`eval \\\"${CMP}\\\" \\\"${PIX}/${bench_testname}.pix\\\" ${bench_testname}.pix 2>&1`"
|
||||
bench_cmp_retval=$?
|
||||
ret=$?
|
||||
|
||||
pixels_result="`echo \\\"$cmp_result\\\" | grep pixels`"
|
||||
if test "x$pixels_result" = "x" ; then
|
||||
$ECHO "$cmp_result"
|
||||
else
|
||||
$ECHO "$pixels_result"
|
||||
fi
|
||||
$ECHO "$cmp_result"
|
||||
|
||||
if test $bench_cmp_retval = 0 ; then
|
||||
if test $ret = 0 ; then
|
||||
# perfect match
|
||||
$ECHO ${bench_testname}.pix: answers are RIGHT
|
||||
elif test $bench_cmp_retval = 1 ; then
|
||||
elif test $ret = 1 ; then
|
||||
# off by one, acceptable
|
||||
$ECHO ${bench_testname}.pix: answers are RIGHT
|
||||
elif test $bench_cmp_retval = 2 ; then
|
||||
elif test $ret = 2 ; then
|
||||
# off by many, unacceptable
|
||||
$ECHO ${bench_testname}.pix: WRONG WRONG WRONG WRONG WRONG WRONG
|
||||
bench_retval=$bench_cmp_retval
|
||||
else
|
||||
# some other failure
|
||||
$ECHO ${bench_testname}.pix: BENCHMARK COMPARISON FAILURE
|
||||
bench_retval=$bench_cmp_retval
|
||||
fi
|
||||
|
||||
$VERBOSE_ECHO "DEBUG: Done benchmark testing on $bench_testname"
|
||||
return $bench_retval
|
||||
return $retval
|
||||
}
|
||||
|
||||
|
||||
@@ -1262,13 +1225,13 @@ perf ( ) {
|
||||
|
||||
# see if we have a calculator
|
||||
perf_have_dc=yes
|
||||
out=`echo "1 1 + p" | dc 2>&1`
|
||||
echo "1 1 + p" | dc >/dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
perf_have_dc=no
|
||||
fi
|
||||
|
||||
perf_have_bc=yes
|
||||
out=`echo "1 + 1" | bc 2>&1`
|
||||
echo "1 + 1" | bc >/dev/null 2>&1
|
||||
if test ! x$? = x0 ; then
|
||||
perf_have_bc=no
|
||||
fi
|
||||
@@ -1327,7 +1290,7 @@ perf ( ) {
|
||||
start="`date '+%H %M %S'`"
|
||||
$ECHO "Running the BRL-CAD Benchmark tests... please wait ..."
|
||||
$ECHO
|
||||
benchmark_retval=0
|
||||
ret=0
|
||||
|
||||
bench moss all.g $RTARGS << EOF
|
||||
viewsize 1.572026215e+02;
|
||||
@@ -1337,7 +1300,7 @@ viewrot -5.735764503e-01 8.191520572e-01 0.000000000e+00 0.000000000e+00
|
||||
7.424039245e-01 5.198368430e-01 4.226182699e-01 0.000000000e+00
|
||||
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00 ;
|
||||
EOF
|
||||
benchmark_retval=`expr $benchmark_retval + $?`
|
||||
ret=`expr $ret + $?`
|
||||
|
||||
bench world all.g $RTARGS << EOF
|
||||
viewsize 1.572026215e+02;
|
||||
@@ -1347,7 +1310,7 @@ viewrot -5.735764503e-01 8.191520572e-01 0.000000000e+00 0.000000000e+00
|
||||
7.424039245e-01 5.198368430e-01 4.226182699e-01 0.000000000e+00
|
||||
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00 ;
|
||||
EOF
|
||||
benchmark_retval=`expr $benchmark_retval + $?`
|
||||
ret=`expr $ret + $?`
|
||||
|
||||
bench star all $RTARGS << EOF
|
||||
viewsize 2.500000000e+05;
|
||||
@@ -1357,7 +1320,7 @@ viewrot -6.733560560e-01 6.130643360e-01 4.132114880e-01 0.000000000e+00
|
||||
4.896120540e-01 7.885590550e-01 -3.720948210e-01 0.000000000e+00
|
||||
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00 ;
|
||||
EOF
|
||||
benchmark_retval=`expr $benchmark_retval + $?`
|
||||
ret=`expr $ret + $?`
|
||||
|
||||
bench bldg391 all.g $RTARGS << EOF
|
||||
viewsize 1.800000000e+03;
|
||||
@@ -1367,7 +1330,7 @@ viewrot -5.735764503e-01 8.191520572e-01 0.000000000e+00 0.000000000e+00
|
||||
7.424039245e-01 5.198368430e-01 4.226182699e-01 0.000000000e+00
|
||||
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00;
|
||||
EOF
|
||||
benchmark_retval=`expr $benchmark_retval + $?`
|
||||
ret=`expr $ret + $?`
|
||||
|
||||
bench m35 all.g $RTARGS <<EOF
|
||||
viewsize 6.787387985e+03;
|
||||
@@ -1377,14 +1340,14 @@ viewrot -5.527838919e-01 8.332423558e-01 1.171090926e-02 0.000000000e+00
|
||||
6.800964482e-01 4.429747496e-01 5.841593895e-01 0.000000000e+00
|
||||
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00 ;
|
||||
EOF
|
||||
benchmark_retval=`expr $benchmark_retval + $?`
|
||||
ret=`expr $ret + $?`
|
||||
|
||||
bench sphflake scene.r $RTARGS <<EOF
|
||||
viewsize 2.556283261452611e+04;
|
||||
orientation 4.406810841785839e-01 4.005093234738861e-01 5.226451688385938e-01 6.101102288499644e-01;
|
||||
eye_pt 2.418500583758302e+04 -3.328563644344796e+03 8.489926952850350e+03;
|
||||
EOF
|
||||
benchmark_retval=`expr $benchmark_retval + $?`
|
||||
ret=`expr $ret + $?`
|
||||
|
||||
$ECHO
|
||||
$ECHO "... Done."
|
||||
@@ -1392,7 +1355,7 @@ $ECHO
|
||||
$ECHO "Total testing time elapsed: `eval \\\"$ELP\\\" $start`"
|
||||
|
||||
# see if we fail
|
||||
if test ! "x$benchmark_retval" = "x0" ; then
|
||||
if test ! "x$ret" = "x0" ; then
|
||||
$ECHO
|
||||
$ECHO "THE BENCHMARK ANALYSIS DID NOT COMPLETE SUCCESSFULLY."
|
||||
$ECHO
|
||||
@@ -1633,10 +1596,6 @@ else
|
||||
fi
|
||||
$ECHO
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$BU_DIR_CACHE"
|
||||
rm -rf "$LIBRT_CACHE"
|
||||
|
||||
$ECHO "Output was saved to $LOGFILE from `pwd`"
|
||||
$ECHO "Benchmark testing complete."
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
# T R Y . S H
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2004-2026 United States Government as represented by
|
||||
# Copyright (c) 2004-2020 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
# V I E W D I F F . S H
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2004-2026 United States Government as represented by
|
||||
# Copyright (c) 2004-2020 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This is a simple script to translate autotools style
|
||||
# configure options into CMake variables. The resulting
|
||||
# translation is then run as a CMake configure.
|
||||
|
||||
srcpath=$(dirname $0)
|
||||
options="$srcpath"
|
||||
while [ "$1" != "" ]
|
||||
do
|
||||
case $1
|
||||
in
|
||||
--enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=BUNDLED";
|
||||
shift;;
|
||||
--disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=SYSTEM";
|
||||
shift;;
|
||||
--enable-opengl) options="$options -DBRLCAD_ENABLE_OPENGL=ON";
|
||||
shift;;
|
||||
--disable-opengl) options="$options -DBRLCAD_ENABLE_OPENGL=OFF";
|
||||
shift;;
|
||||
--enable-runtime-debug) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-runtime-debug) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-run-time-debug) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-run-time-debug) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-runtime-debugging) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-runtime-debugging) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-run-time-debugging) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-run-time-debugging) options="$options -DBRLCAD_ENABLE_RUNTIME_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-debug) options="$options -DBRLCAD_FLAGS_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-debug) options="$options -DBRLCAD_FLAGS_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-flags-debug) options="$options -DBRLCAD_FLAGS_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-flags-debug) options="$options -DBRLCAD_FLAGS_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-debug-flags) options="$options -DBRLCAD_FLAGS_DEBUG=ON";
|
||||
shift;;
|
||||
--disable-debug-flags) options="$options -DBRLCAD_FLAGS_DEBUG=OFF";
|
||||
shift;;
|
||||
--enable-warnings) options="$options -DBRLCAD_ENABLE_COMPILER_WARNINGS=ON";
|
||||
shift;;
|
||||
--disable-warnings) options="$options -DBRLCAD_ENABLE_COMPILER_WARNINGS=OFF";
|
||||
shift;;
|
||||
--enable-compiler-warnings) options="$options -DBRLCAD_ENABLE_COMPILER_WARNINGS=ON";
|
||||
shift;;
|
||||
--disable-compiler-warnings) options="$options -DBRLCAD_ENABLE_COMPILER_WARNINGS=OFF";
|
||||
shift;;
|
||||
--enable-strict) options="$options -DBRLCAD_ENABLE_STRICT=ON";
|
||||
shift;;
|
||||
--disable-strict) options="$options -DBRLCAD_ENABLE_STRICT=OFF";
|
||||
shift;;
|
||||
--enable-strict-compile) options="$options -DBRLCAD_ENABLE_STRICT=ON";
|
||||
shift;;
|
||||
--disable-strict-compile) options="$options -DBRLCAD_ENABLE_STRICT=OFF";
|
||||
shift;;
|
||||
--enable-strict-compile-flags) options="$options -DBRLCAD_ENABLE_STRICT=ON";
|
||||
shift;;
|
||||
--disable-strict-compile-flags) options="$options -DBRLCAD_ENABLE_STRICT=OFF";
|
||||
shift;;
|
||||
--enable-all-cxx) options="$options -DENABLE_ALL_CXX_COMPILE=ON";
|
||||
shift;;
|
||||
--disable-all-cxx) options="$options -DENABLE_ALL_CXX_COMPILE=OFF";
|
||||
shift;;
|
||||
--enable-docs) options="$options -DBRLCAD_EXTRADOCS=ON";
|
||||
shift;;
|
||||
--disable-docs) options="$options -DBRLCAD_EXTRADOCS=OFF";
|
||||
shift;;
|
||||
--enable-extra-docs) options="$options -DBRLCAD_EXTRADOCS=ON";
|
||||
shift;;
|
||||
--disable-extra-docs) options="$options -DBRLCAD_EXTRADOCS=OFF";
|
||||
shift;;
|
||||
--enable-docbook) options="$options -DBRLCAD_EXTRADOCS=ON";
|
||||
shift;;
|
||||
--disable-docbook) options="$options -DBRLCAD_EXTRADOCS=OFF";
|
||||
shift;;
|
||||
--enable-lemon) options="$options -DBRLCAD_LEMON=BUNDLED";
|
||||
shift;;
|
||||
--disable-lemon) options="$options -DBRLCAD_LEMON=SYSTEM";
|
||||
shift;;
|
||||
--enable-re2c) options="$options -DBRLCAD_RE2C=BUNDLED";
|
||||
shift;;
|
||||
--disable-re2c) options="$options -DBRLCAD_RE2C=SYSTEM";
|
||||
shift;;
|
||||
--enable-perplex) options="$options -DBRLCAD_PERPLEX=BUNDLED";
|
||||
shift;;
|
||||
--disable-perplex) options="$options -DBRLCAD_PERPLEX=SYSTEM";
|
||||
shift;;
|
||||
--enable-astyle) options="$options -DBRLCAD_ASTYLE=BUNDLED";
|
||||
shift;;
|
||||
--disable-astyle) options="$options -DBRLCAD_ASTYLE=SYSTEM";
|
||||
shift;;
|
||||
--enable-xsltproc) options="$options -DBRLCAD_XSLTPROC=BUNDLED";
|
||||
shift;;
|
||||
--disable-xsltproc) options="$options -DBRLCAD_XSLTPROC=SYSTEM";
|
||||
shift;;
|
||||
--enable-xmllint) options="$options -DBRLCAD_XMLLINT=BUNDLED";
|
||||
shift;;
|
||||
--disable-xmllint) options="$options -DBRLCAD_XMLLINT=SYSTEM";
|
||||
shift;;
|
||||
--enable-regex) options="$options -DBRLCAD_REGEX=BUNDLED";
|
||||
shift;;
|
||||
--disable-regex) options="$options -DBRLCAD_REGEX=SYSTEM";
|
||||
shift;;
|
||||
--enable-zlib) options="$options -DBRLCAD_ZLIB=BUNDLED";
|
||||
shift;;
|
||||
--disable-zlib) options="$options -DBRLCAD_ZLIB=SYSTEM";
|
||||
shift;;
|
||||
--enable-libz) options="$options -DBRLCAD_ZLIB=BUNDLED";
|
||||
shift;;
|
||||
--disable-libz) options="$options -DBRLCAD_ZLIB=SYSTEM";
|
||||
shift;;
|
||||
--enable-lz4) options="$options -DBRLCAD_LZ4=BUNDLED";
|
||||
shift;;
|
||||
--disable-lz4) options="$options -DBRLCAD_LZ4=SYSTEM";
|
||||
shift;;
|
||||
--enable-freetype) options="$options -DBRLCAD_FREETYPE=BUNDLED";
|
||||
shift;;
|
||||
--disable-freetype) options="$options -DBRLCAD_FREETYPE=SYSTEM";
|
||||
shift;;
|
||||
--enable-netpbm) options="$options -DBRLCAD_NETPBM=BUNDLED";
|
||||
shift;;
|
||||
--disable-netpbm) options="$options -DBRLCAD_NETPBM=SYSTEM";
|
||||
shift;;
|
||||
--enable-png) options="$options -DBRLCAD_PNG=BUNDLED";
|
||||
shift;;
|
||||
--disable-png) options="$options -DBRLCAD_PNG=SYSTEM";
|
||||
shift;;
|
||||
--enable-utahrle) options="$options -DBRLCAD_UTAHRLE=BUNDLED";
|
||||
shift;;
|
||||
--disable-utahrle) options="$options -DBRLCAD_UTAHRLE=SYSTEM";
|
||||
shift;;
|
||||
--enable-tcl) options="$options -DBRLCAD_TCL=BUNDLED";
|
||||
shift;;
|
||||
--disable-tcl) options="$options -DBRLCAD_TCL=SYSTEM";
|
||||
shift;;
|
||||
--enable-tk) options="$options -DBRLCAD_TK=BUNDLED";
|
||||
shift;;
|
||||
--disable-tk) options="$options -DBRLCAD_TK=SYSTEM";
|
||||
shift;;
|
||||
--enable-itcl) options="$options -DBRLCAD_ITCL=BUNDLED";
|
||||
shift;;
|
||||
--disable-itcl) options="$options -DBRLCAD_ITCL=SYSTEM";
|
||||
shift;;
|
||||
--enable-itk) options="$options -DBRLCAD_ITK=BUNDLED";
|
||||
shift;;
|
||||
--disable-itk) options="$options -DBRLCAD_ITK=SYSTEM";
|
||||
shift;;
|
||||
--enable-iwidgets) options="$options -DBRLCAD_IWIDGETS=BUNDLED";
|
||||
shift;;
|
||||
--disable-iwidgets) options="$options -DBRLCAD_IWIDGETS=SYSTEM";
|
||||
shift;;
|
||||
--enable-tkhtml) options="$options -DBRLCAD_TKHTML=BUNDLED";
|
||||
shift;;
|
||||
--disable-tkhtml) options="$options -DBRLCAD_TKHTML=SYSTEM";
|
||||
shift;;
|
||||
--enable-tktable) options="$options -DBRLCAD_TKTABLE=BUNDLED";
|
||||
shift;;
|
||||
--disable-tktable) options="$options -DBRLCAD_TKTABLE=SYSTEM";
|
||||
shift;;
|
||||
--enable-opennurbs) options="$options -DBRLCAD_OPENNURBS=BUNDLED";
|
||||
shift;;
|
||||
--disable-opennurbs) options="$options -DBRLCAD_OPENNURBS=SYSTEM";
|
||||
shift;;
|
||||
--enable-spsr) options="$options -DBRLCAD_SPSR=BUNDLED";
|
||||
shift;;
|
||||
--disable-spsr) options="$options -DBRLCAD_SPSR=SYSTEM";
|
||||
shift;;
|
||||
--enable-scl) options="$options -DBRLCAD_SC=BUNDLED";
|
||||
shift;;
|
||||
--disable-scl) options="$options -DBRLCAD_SC=SYSTEM";
|
||||
shift;;
|
||||
--enable-step) options="$options -DBRLCAD_SC=BUNDLED";
|
||||
shift;;
|
||||
--disable-step) options="$options -DBRLCAD_SC=SYSTEM";
|
||||
shift;;
|
||||
--enable-step-class-libraries) options="$options -DBRLCAD_SC=BUNDLED";
|
||||
shift;;
|
||||
--disable-step-class-libraries) options="$options -DBRLCAD_SC=SYSTEM";
|
||||
shift;;
|
||||
--enable-vds) options="$options -DBRLCAD_VDS=BUNDLED";
|
||||
shift;;
|
||||
--disable-vds) options="$options -DBRLCAD_VDS=SYSTEM";
|
||||
shift;;
|
||||
--enable-openscenegraph) options="$options -DBRLCAD_OSG=BUNDLED";
|
||||
shift;;
|
||||
--disable-openscenegraph) options="$options -DBRLCAD_OSG=SYSTEM";
|
||||
shift;;
|
||||
--enable-gdiam) options="$options -DBRLCAD_GDIAM=BUNDLED";
|
||||
shift;;
|
||||
--disable-gdiam) options="$options -DBRLCAD_GDIAM=SYSTEM";
|
||||
shift;;
|
||||
--enable-proj4) options="$options -DBRLCAD_PROJ4=BUNDLED";
|
||||
shift;;
|
||||
--disable-proj4) options="$options -DBRLCAD_PROJ4=SYSTEM";
|
||||
shift;;
|
||||
--enable-gdal) options="$options -DBRLCAD_GDAL=BUNDLED";
|
||||
shift;;
|
||||
--disable-gdal) options="$options -DBRLCAD_GDAL=SYSTEM";
|
||||
shift;;
|
||||
--prefix=*) inputstr=$1;
|
||||
options="$options -DCMAKE_INSTALL_PREFIX=${inputstr#--prefix=}";
|
||||
shift;;
|
||||
*) echo "Warning: unknown option $1";
|
||||
shift;;
|
||||
esac
|
||||
done
|
||||
echo cmake $options
|
||||
cmake $options
|
||||
Binary file not shown.
+107
-229
@@ -1,18 +1,28 @@
|
||||
function(G_TARGET in_model folder)
|
||||
# There is quite a bit of shared logic for the various converters when it comes
|
||||
# to building .g outputs, so we use a single function to manage the process and
|
||||
# handle format-specific bits internally. TODO - we probably need to add
|
||||
# optional argument support here later to support (say) specifying a specific
|
||||
# COMGEOM or STEP format version...
|
||||
|
||||
function(ADD_G_TARGET in_model folder)
|
||||
|
||||
# Initialize
|
||||
set(MODEL_TYPE "UNKNOWN")
|
||||
set(CONV_SUCCESS_CODES 0)
|
||||
|
||||
# Regardless of what we decide, let CMake know about the file
|
||||
cmakefiles(${CMAKE_CURRENT_SOURCE_DIR}/${in_model})
|
||||
# Get our root path
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
set(bin_root "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
set(bin_root "${CMAKE_BINARY_DIR}")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
# Find our conversion type
|
||||
set(model_types "3dm;asc;comgeom;fg4;stp")
|
||||
foreach(mt ${model_types})
|
||||
if("${MODEL_TYPE}" STREQUAL "UNKNOWN")
|
||||
if("${in_model}" MATCHES ".${mt}$")
|
||||
set(MODEL_TYPE "${mt}")
|
||||
string(REGEX REPLACE "([0-9a-z]*).${mt}" "\\1" in_model_root "${in_model}")
|
||||
set(MODEL_TYPE "${mt}")
|
||||
string(REGEX REPLACE "([0-9a-z]*).${mt}" "\\1" in_model_root "${in_model}")
|
||||
endif("${in_model}" MATCHES ".${mt}$")
|
||||
endif("${MODEL_TYPE}" STREQUAL "UNKNOWN")
|
||||
endforeach(mt ${model_types})
|
||||
@@ -20,169 +30,99 @@ function(G_TARGET in_model folder)
|
||||
message(FATAL_ERROR "Unable to identify input model type for file ${in_model}")
|
||||
endif("${MODEL_TYPE}" STREQUAL "UNKNOWN")
|
||||
|
||||
# Make sure variables are set up for configure_file
|
||||
set(in_model_root "${in_model_root}")
|
||||
|
||||
# Find our output file and path
|
||||
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" rel_dir "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(output_file ${DATA_DIR}/${rel_dir}/${in_model_root}.g)
|
||||
set(CONV_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${output_file}")
|
||||
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.log)
|
||||
|
||||
# Make sure the output db target directory is there
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${DATA_DIR}/${rel_dir}")
|
||||
# Make sure the output db target directories are there
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${CFG_TYPE}/${DATA_DIR}/${rel_dir}")
|
||||
endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${DATA_DIR}/${rel_dir}")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
# Rhino 3DM file
|
||||
#############################################################################
|
||||
# Build logic
|
||||
#############################################################################
|
||||
|
||||
# The 3DM conversion is rather different than the general pattern at the
|
||||
# moment (However, the 3dm approach is probably the "wave of the future" in
|
||||
# the sense that it uses libgcv...)
|
||||
if(${MODEL_TYPE} STREQUAL "3dm")
|
||||
if(NOT TARGET 3dm-g)
|
||||
return()
|
||||
endif(NOT TARGET 3dm-g)
|
||||
set(CONV_ARGS "-o \"${CMAKE_BINARY_DIR}/${output_file}\" \"${CMAKE_CURRENT_SOURCE_DIR}/${in_model}\"")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/db/to_g.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
|
||||
# Custom command to generate the output
|
||||
|
||||
# Because we won't know the output directory in the script reliably until run time,
|
||||
# we append CURRENT_BUILD_DIR as a string to the arguments - it is the script's
|
||||
# responsibility to handle it correctly at run time.
|
||||
set(CMD_ARGS "-o" "CURRENT_BUILD_DIR/${output_file}" "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}")
|
||||
|
||||
# Use the model name for the script, since the output file is specific to this input
|
||||
set(script_file "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
|
||||
|
||||
# We know enough - write the script
|
||||
generate_cmd_script(3dm-g "${script_file}" OLOG "${log_file}" ELOG "${log_file}" CARGS "${CMD_ARGS}")
|
||||
|
||||
# Define the target
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_BINARY_DIR}/${output_file}"
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:3dm-g> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
|
||||
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -P "${script_file}"
|
||||
DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
|
||||
)
|
||||
)
|
||||
|
||||
endif(${MODEL_TYPE} STREQUAL "3dm")
|
||||
|
||||
# BRL-CAD ASCII database
|
||||
# The rest of the conversions follow the simpler/older pattern:
|
||||
|
||||
if(${MODEL_TYPE} STREQUAL "asc")
|
||||
set(CONV_ARGS "\"${CMAKE_CURRENT_SOURCE_DIR}/${in_model}\" \"${CMAKE_BINARY_DIR}/${output_file}\"")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/db/to_g.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
|
||||
if(BRLCAD_ENABLE_TCL)
|
||||
if(NOT TARGET asc2g)
|
||||
return()
|
||||
endif(NOT TARGET asc2g)
|
||||
# Custom command to generate the output
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:asc2g> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
|
||||
DEPENDS asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}"
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
COMMAND asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}" ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
DEPENDS asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}"
|
||||
)
|
||||
else(BRLCAD_ENABLE_TCL)
|
||||
if(NOT TARGET gcv)
|
||||
return()
|
||||
endif(NOT TARGET gcv)
|
||||
# Custom command to generate the output
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:gcv> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
|
||||
DEPENDS gcv "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}"
|
||||
)
|
||||
endif(BRLCAD_ENABLE_TCL)
|
||||
endif(${MODEL_TYPE} STREQUAL "asc")
|
||||
|
||||
# COMGEOM (pre BRL-CAD Geometry Information For Targets (GIFT) files)
|
||||
if(${MODEL_TYPE} STREQUAL "comgeom")
|
||||
if(NOT TARGET comgeom-g)
|
||||
return()
|
||||
endif(NOT TARGET comgeom-g)
|
||||
set(CONV_ARGS "-v 5 \"${CMAKE_CURRENT_SOURCE_DIR}/${in_model}\" \"${CMAKE_BINARY_DIR}/${output_file}\"")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/db/to_g.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
|
||||
# Custom command to generate the output
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_BINARY_DIR}/${output_file}"
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:comgeom-g> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
|
||||
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
COMMAND comgeom-g -v 5 ${CMAKE_CURRENT_SOURCE_DIR}/${in_model} ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} > ${log_file} 2>&1
|
||||
DEPENDS comgeom-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
|
||||
)
|
||||
)
|
||||
endif(${MODEL_TYPE} STREQUAL "comgeom")
|
||||
|
||||
# FASTGEN 4
|
||||
if(${MODEL_TYPE} STREQUAL "fg4")
|
||||
if(NOT TARGET fast4-g)
|
||||
return()
|
||||
endif(NOT TARGET fast4-g)
|
||||
set(CONV_ARGS "\"${CMAKE_CURRENT_SOURCE_DIR}/${in_model}\" \"${CMAKE_BINARY_DIR}/${output_file}\"")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/db/to_g.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_BINARY_DIR}/${output_file}"
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:fast4-g> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
|
||||
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
COMMAND fast4-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model} ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} > ${log_file} 2>&1
|
||||
DEPENDS fast4-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
|
||||
)
|
||||
)
|
||||
endif(${MODEL_TYPE} STREQUAL "fg4")
|
||||
|
||||
# STEP AP203
|
||||
if(${MODEL_TYPE} STREQUAL "stp")
|
||||
if(NOT TARGET step-g)
|
||||
return()
|
||||
endif(NOT TARGET step-g)
|
||||
set(CONV_ARGS "-O \"${CMAKE_BINARY_DIR}/${output_file}\" \"${CMAKE_CURRENT_SOURCE_DIR}/${in_model}\"")
|
||||
# step-g uses status 1 for useful, deliberately published partial output.
|
||||
# Installed sample databases should retain that geometry; statuses 2 and
|
||||
# above, or a missing output file, remain build failures.
|
||||
set(CONV_SUCCESS_CODES "0;1")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/db/to_g.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
|
||||
# Custom command to generate the output
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_BINARY_DIR}/${output_file}"
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:step-g> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
|
||||
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
|
||||
COMMAND step-g -O ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} ${CMAKE_CURRENT_SOURCE_DIR}/${in_model} > ${log_file} 2>&1
|
||||
DEPENDS step-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
|
||||
)
|
||||
)
|
||||
endif(${MODEL_TYPE} STREQUAL "stp")
|
||||
|
||||
# If we got this far, do the target, install and clean-up rules
|
||||
add_custom_target(${in_model_root}.g ALL DEPENDS ${CMAKE_BINARY_DIR}/${output_file})
|
||||
add_custom_target(${in_model_root}.g ALL DEPENDS ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file})
|
||||
set_target_properties(${in_model_root}.g PROPERTIES FOLDER "${folder}")
|
||||
|
||||
# Install logic
|
||||
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/${output_file} DESTINATION ${DATA_DIR}/${rel_dir})
|
||||
install(FILES ${CMAKE_CURRENT_BUILD_DIR_INSTALL}/${output_file} DESTINATION ${DATA_DIR}/${rel_dir})
|
||||
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
|
||||
# Clean-up
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${log_file}")
|
||||
distclean("${log_file}")
|
||||
endfunction(G_TARGET in_model folder)
|
||||
DISTCLEAN("${log_file}")
|
||||
|
||||
function(PIX_TARGET in_image folder)
|
||||
if(NOT TARGET png-pix)
|
||||
return()
|
||||
endif(NOT TARGET png-pix)
|
||||
endfunction(ADD_G_TARGET in_model folder)
|
||||
|
||||
cmakefiles(${CMAKE_CURRENT_SOURCE_DIR}/${in_image})
|
||||
get_filename_component(in_image_root "${in_image}" NAME_WE)
|
||||
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" rel_dir "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(output_file ${DATA_DIR}/${rel_dir}/${in_image_root}.pix)
|
||||
set(output_path "${CMAKE_BINARY_DIR}/${output_file}")
|
||||
set(conversion_file "${CMAKE_CURRENT_BINARY_DIR}/${in_image_root}_pix.cmake")
|
||||
|
||||
set(PIX_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${in_image}")
|
||||
set(PIX_OUTPUT "${output_path}")
|
||||
set(PIX_LABEL "${in_image_root}.pix")
|
||||
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${DATA_DIR}/${rel_dir}")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/db/to_pix.cmake.in" "${conversion_file}" @ONLY)
|
||||
distclean("${conversion_file}")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${output_path}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove "${output_path}"
|
||||
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:png-pix> -P "${conversion_file}"
|
||||
DEPENDS png-pix "${PIX_INPUT}"
|
||||
)
|
||||
add_custom_target(${in_image_root}.pix ALL DEPENDS ${output_path})
|
||||
set_target_properties(${in_image_root}.pix PROPERTIES FOLDER "${folder}")
|
||||
|
||||
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
install(FILES ${output_path} DESTINATION ${DATA_DIR}/${rel_dir})
|
||||
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
|
||||
distclean("${output_path}")
|
||||
endfunction(PIX_TARGET in_image folder)
|
||||
|
||||
set(
|
||||
G_BENCHMARK_MODELS
|
||||
set(G_BENCHMARK_MODELS
|
||||
bldg391.asc
|
||||
m35.asc
|
||||
moss.asc
|
||||
@@ -191,14 +131,10 @@ set(
|
||||
world.asc
|
||||
)
|
||||
|
||||
set(
|
||||
G_SAMPLE_MODELS
|
||||
set(G_SAMPLE_MODELS
|
||||
aet.asc
|
||||
arb8_showcase.asc
|
||||
annual_gift_man.asc
|
||||
axis.asc
|
||||
bearing.asc
|
||||
bicycle_wheel.asc
|
||||
boolean-ops.asc
|
||||
castle.asc
|
||||
cornell.asc
|
||||
@@ -208,8 +144,6 @@ set(
|
||||
cube.asc
|
||||
demo.asc
|
||||
die.asc
|
||||
earth.asc
|
||||
gaia.asc
|
||||
galileo.asc
|
||||
goliath.asc
|
||||
havoc.asc
|
||||
@@ -217,18 +151,13 @@ set(
|
||||
ktank.asc
|
||||
lgt-test.asc
|
||||
operators.asc
|
||||
photo_holder.asc
|
||||
pic.asc
|
||||
pinewood.asc
|
||||
primitives.asc
|
||||
prim.asc
|
||||
radialgrid.asc
|
||||
rounds.asc
|
||||
shipping_container.asc
|
||||
tank_car.asc
|
||||
terra.asc
|
||||
toyjeep.asc
|
||||
traffic_light.asc
|
||||
truck.asc
|
||||
wave.asc
|
||||
woodsman.asc
|
||||
@@ -239,114 +168,63 @@ add_subdirectory(comgeom)
|
||||
add_subdirectory(nist)
|
||||
add_subdirectory(faa)
|
||||
|
||||
pix_target(earth.png "BRL-CAD Geometry Models/Sample")
|
||||
|
||||
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
brlcad_adddata(earth.png db)
|
||||
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
|
||||
foreach(g_input ${G_BENCHMARK_MODELS})
|
||||
g_target(${g_input} "BRL-CAD Geometry Models/Benchmark")
|
||||
ADD_G_TARGET(${g_input} "BRL-CAD Geometry Models/Benchmark")
|
||||
endforeach(g_input ${G_BENCHMARK_MODELS})
|
||||
|
||||
foreach(g_input ${G_SAMPLE_MODELS})
|
||||
g_target(${g_input} "BRL-CAD Geometry Models/Sample")
|
||||
ADD_G_TARGET(${g_input} "BRL-CAD Geometry Models/Sample")
|
||||
endforeach(g_input ${G_SAMPLE_MODELS})
|
||||
|
||||
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY AND TARGET gcv)
|
||||
brlcad_adddata(1647260.dsp db)
|
||||
brlcad_adddata(ebm_logo.bw db)
|
||||
brlcad_adddata(terra.bin db)
|
||||
brlcad_adddata(vol_data.bw db)
|
||||
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY AND TARGET gcv)
|
||||
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
BRLCAD_ADDDATA(terra.dsp db)
|
||||
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
|
||||
|
||||
if(SH_EXEC)
|
||||
if(TARGET mged OR TARGET gcv)
|
||||
set(conversion_g_files)
|
||||
set(conversion_g_files_fp)
|
||||
set(conversion_deps_list)
|
||||
set(conversion_g_files)
|
||||
set(conversion_g_files_fp)
|
||||
set(conversion_deps_list)
|
||||
|
||||
macro(Sh_Conversion_Test gfile depends_list)
|
||||
if(TARGET mged)
|
||||
add_custom_target(
|
||||
convert-${gfile}
|
||||
COMMAND
|
||||
${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged>
|
||||
${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}
|
||||
)
|
||||
else()
|
||||
add_custom_target(
|
||||
convert-${gfile}
|
||||
COMMAND
|
||||
${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:gcv>
|
||||
${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}
|
||||
)
|
||||
endif(TARGET mged)
|
||||
set_target_properties(convert-${gfile} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
set_target_properties(convert-${gfile} PROPERTIES FOLDER "BRL-CAD Conversion Tests")
|
||||
set(conversion_g_files ${conversion_g_files} ${gfile})
|
||||
if(NOT "${depends_list}" STREQUAL "")
|
||||
add_dependencies(convert-${gfile} ${depends_list})
|
||||
set(conversion_deps_list ${conversion_deps_list} ${depends_list})
|
||||
endif(NOT "${depends_list}" STREQUAL "")
|
||||
endmacro(Sh_Conversion_Test)
|
||||
macro(Sh_Conversion_Test gfile depends_list)
|
||||
add_custom_target(convert-${gfile} COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile})
|
||||
set_target_properties(convert-${gfile} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
set_target_properties(convert-${gfile} PROPERTIES FOLDER "BRL-CAD Conversion Tests")
|
||||
set(conversion_g_files ${conversion_g_files} ${gfile})
|
||||
if(NOT "${depends_list}" STREQUAL "")
|
||||
add_dependencies(convert-${gfile} ${depends_list})
|
||||
set(conversion_deps_list ${conversion_deps_list} ${depends_list})
|
||||
endif(NOT "${depends_list}" STREQUAL "")
|
||||
endmacro(Sh_Conversion_Test)
|
||||
|
||||
foreach(g_input ${G_BENCHMARK_MODELS})
|
||||
get_filename_component(GROOT "${g_input}" NAME_WE)
|
||||
if(TARGET mged)
|
||||
sh_conversion_test(${GROOT}.g "mged")
|
||||
else()
|
||||
sh_conversion_test(${GROOT}.g "gcv")
|
||||
endif(TARGET mged)
|
||||
endforeach(g_input ${G_BENCHMARK_MODELS})
|
||||
foreach(g_input ${G_SAMPLE_MODELS})
|
||||
get_filename_component(GROOT "${g_input}" NAME_WE)
|
||||
if(TARGET mged)
|
||||
sh_conversion_test(${GROOT}.g "mged")
|
||||
else()
|
||||
sh_conversion_test(${GROOT}.g "gcv")
|
||||
endif(TARGET mged)
|
||||
endforeach(g_input ${G_SAMPLE_MODELS})
|
||||
foreach(g_input ${G_BENCHMARK_MODELS})
|
||||
get_filename_component(GROOT "${g_input}" NAME_WE)
|
||||
Sh_Conversion_Test(${GROOT}.g "mged")
|
||||
endforeach(g_input ${G_BENCHMARK_MODELS})
|
||||
foreach(g_input ${G_SAMPLE_MODELS})
|
||||
get_filename_component(GROOT "${g_input}" NAME_WE)
|
||||
Sh_Conversion_Test(${GROOT}.g "mged")
|
||||
endforeach(g_input ${G_SAMPLE_MODELS})
|
||||
|
||||
list(REMOVE_DUPLICATES conversion_deps_list)
|
||||
foreach(gfile ${conversion_g_files})
|
||||
set(conversion_g_files_fp ${conversion_g_files_fp} "${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}")
|
||||
endforeach(gfile ${conversion_g_files})
|
||||
if(TARGET mged)
|
||||
add_custom_target(
|
||||
convert
|
||||
COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${conversion_g_files_fp}
|
||||
)
|
||||
else()
|
||||
add_custom_target(
|
||||
convert
|
||||
COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:gcv> ${conversion_g_files_fp}
|
||||
)
|
||||
endif(TARGET mged)
|
||||
set_target_properties(convert PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
set_target_properties(convert PROPERTIES FOLDER "BRL-CAD Conversion Tests")
|
||||
add_dependencies(convert ${conversion_deps_list})
|
||||
endif(TARGET mged OR TARGET gcv)
|
||||
list(REMOVE_DUPLICATES conversion_deps_list)
|
||||
foreach(gfile ${conversion_g_files})
|
||||
set(conversion_g_files_fp ${conversion_g_files_fp} "${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}")
|
||||
endforeach(gfile ${conversion_g_files})
|
||||
add_custom_target(convert COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${conversion_g_files_fp})
|
||||
set_target_properties(convert PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
set_target_properties(convert PROPERTIES FOLDER "BRL-CAD Conversion Tests")
|
||||
add_dependencies(convert ${conversion_deps_list})
|
||||
endif(SH_EXEC)
|
||||
|
||||
cmakefiles(
|
||||
CMAKEFILES(
|
||||
${G_BENCHMARK_MODELS}
|
||||
${G_SAMPLE_MODELS}
|
||||
1647260.dsp
|
||||
CMakeLists.txt
|
||||
aet.rt
|
||||
cornell.rt
|
||||
cube.rt
|
||||
db.php
|
||||
ebm_logo.bw
|
||||
earth.png
|
||||
include/ctype.inc
|
||||
include/debug.inc
|
||||
terra.bin
|
||||
to_g.cmake.in
|
||||
to_pix.cmake.in
|
||||
traffic_light.rt
|
||||
vol_data.bw
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
|
||||
@@ -1,191 +0,0 @@
|
||||
title {Annual Gift Man}
|
||||
units in
|
||||
put {body.black.s1} arb8 V1 {228.5999999999999658939487 -228.5999999999999658939487 88.89999999999999147348717} V2 {228.5999999999999658939487 228.5999999999999658939487 88.89999999999999147348717} V3 {228.5999999999999658939487 228.5999999999999658939487 63.49999999999999289457264} V4 {228.5999999999999658939487 -228.5999999999999658939487 63.49999999999999289457264} V5 {-228.5999999999999658939487 -228.5999999999999658939487 88.89999999999999147348717} V6 {-228.5999999999999658939487 228.5999999999999658939487 88.89999999999999147348717} V7 {-228.5999999999999658939487 228.5999999999999658939487 63.49999999999999289457264} V8 {-228.5999999999999658939487 -228.5999999999999658939487 63.49999999999999289457264}
|
||||
put {body.gold.s2} arb8 V1 {228.5999999999999658939487 -38.10000000000000852651283 88.89999999999994884092303} V2 {228.5999999999999658939487 38.10000000000000852651283 88.89999999999994884092303} V3 {228.5999999999999658939487 38.10000000000000852651283 63.49999999999998578914528} V4 {228.5999999999999658939487 -38.10000000000000852651283 63.49999999999998578914528} V5 {177.7999999999999545252649 -38.10000000000000852651283 88.89999999999994884092303} V6 {177.7999999999999545252649 38.10000000000000852651283 88.89999999999994884092303} V7 {177.7999999999999545252649 38.10000000000000852651283 63.49999999999998578914528} V8 {177.7999999999999545252649 -38.10000000000000852651283 63.49999999999998578914528}
|
||||
put {body.gold.s1} arb8 V1 {228.5999999999999943156581 -50.80000000000000426325641 101.5999999999999801048034} V2 {228.5999999999999943156581 50.80000000000000426325641 101.5999999999999801048034} V3 {228.5999999999999943156581 50.80000000000000426325641 50.79999999999999715782906} V4 {228.5999999999999943156581 -50.80000000000000426325641 50.79999999999999715782906} V5 {177.8000000000000113686838 -50.80000000000000426325641 101.5999999999999801048034} V6 {177.8000000000000113686838 50.80000000000000426325641 101.5999999999999801048034} V7 {177.8000000000000113686838 50.80000000000000426325641 50.79999999999999715782906} V8 {177.8000000000000113686838 -50.80000000000000426325641 50.79999999999999715782906}
|
||||
put {body.gold.c} comb region no tree {- {l body.gold.s1} {l body.gold.s2}}
|
||||
put {missile2.s2} tgc V {-117.4750000000000227373675 -277.8124999999999431565811 12.70000000000000284217094} H {-3.110602869834276865189663E-15 0 -25.39999999999999857891453} A {0 9.524999999999998578914528 0} B {-9.524999999999998578914528 0 1.166476076187853824446124E-15} C {0 0.8255000000000000115463195 0} D {-0.8255000000000000115463195 0 1.010945932696140237566435E-16}
|
||||
put {missile1.s2} tgc V {-117.4749999999999943156581 277.8124999999999431565811 12.70000000000000284217094} H {-3.110602869834276865189663E-15 0 -25.39999999999999857891453} A {0 -9.524999999999998578914528 0} B {-9.524999999999998578914528 0 1.166476076187853824446124E-15} C {0 -0.8255000000000000115463195 0} D {-0.8255000000000000115463195 0 1.010945932696140237566435E-16}
|
||||
put {missile2.s1} tgc V {-117.4750000000000227373675 -277.8124999999999431565811 12.70000000000000284217094} H {0 0 101.5999999999999943156581} A {0 9.524999999999998578914528 0} B {9.524999999999998578914528 0 0} C {0 9.524999999999998578914528 0} D {9.524999999999998578914528 0 0}
|
||||
put {missile1.s1} tgc V {-117.4749999999999943156581 277.8124999999999431565811 12.70000000000000284217094} H {0 0 101.5999999999999943156581} A {0 -9.524999999999998578914528 0} B {9.524999999999998578914528 0 0} C {0 -9.524999999999998578914528 0} D {9.524999999999998578914528 0 0}
|
||||
put {rt_leg.s1i2} arb8 V1 {25.40000000000000568434189 -98.42500000000002557953849 -241.2999999999999829469743} V2 {25.40000000000000213162821 -104.7750000000000198951966 -241.2999999999999829469743} V3 {25.40000000000000213162821 -104.7750000000000198951966 -12.7000000000000010658141} V4 {25.40000000000000568434189 -98.42500000000002557953849 -12.7000000000000010658141} V5 {-76.20000000000003126388037 -98.42500000000001136868377 -241.2999999999999829469743} V6 {-76.20000000000003126388037 -104.7750000000000056843419 -241.2999999999999829469743} V7 {-76.20000000000003126388037 -104.7750000000000056843419 -12.7000000000000010658141} V8 {-76.20000000000003126388037 -98.42500000000001136868377 -12.7000000000000010658141}
|
||||
put {lt_leg.s1i2} arb8 V1 {25.40000000000001634248292 98.42500000000002557953849 -241.2999999999999829469743} V2 {25.40000000000001634248292 104.7750000000000198951966 -241.2999999999999829469743} V3 {25.40000000000001634248292 104.7750000000000198951966 -12.7000000000000010658141} V4 {25.40000000000001634248292 98.42500000000002557953849 -12.7000000000000010658141} V5 {-76.20000000000001705302566 98.42500000000002557953849 -241.2999999999999829469743} V6 {-76.20000000000001705302566 104.7750000000000198951966 -241.2999999999999829469743} V7 {-76.20000000000001705302566 104.7750000000000198951966 -12.7000000000000010658141} V8 {-76.20000000000001705302566 98.42500000000002557953849 -12.7000000000000010658141}
|
||||
put {mustache.r} comb region yes tree {n {- {l head.s8} {l head.s1}} {l head.s8i}}
|
||||
attr set {mustache.r} {region} {R} {region_id} {1037} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {button.s6a} tgc V {-228.600000000000051159077 -126.9999999999999715782906 38.10000000000002273736754} H {317.5978069738537215016549 0 328.8821567148312965400692} A {11.41951933037608313270539 0 -11.02770163103658696002185} B {0 -15.87500000000000177635684 0} C {11.41951933037608490906223 0 -11.02770163103658873637869} D {0 -15.87500000000000177635684 0}
|
||||
put {button.r6a} comb region yes tree {- {n {- {l button.s6a} {l button.s6}} {l body.s2a}} {l body.s2}}
|
||||
attr set {button.r6a} {region} {R} {region_id} {1036} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {button.s5a} tgc V {-228.600000000000051159077 -126.9999999999999715782906 38.10000000000002273736754} H {391.8968898810059044990339 0 235.4754078488767561339046} A {8.176229439197108206371922 0 -13.60753089864603637693108} B {0 -15.87500000000000177635684 0} C {8.176229439197108206371922 0 -13.60753089864603637693108} D {0 -15.87500000000000177635684 0}
|
||||
put {button.r5a} comb region yes tree {- {n {- {l button.s5a} {l button.s5}} {l body.s2a}} {l body.s2}}
|
||||
attr set {button.r5a} {region} {R} {region_id} {1035} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {button.s4a} tgc V {-228.600000000000051159077 -126.9999999999999715782906 38.10000000000002273736754} H {439.4888473829994381958386 0 126.0213990795319745075176} A {4.375743023594861114133892 0 -15.26002942302081066827668} B {0 -15.87499999999999822364316 0} C {4.375743023594861114133892 0 -15.26002942302081066827668} D {0 -15.87499999999999822364316 0}
|
||||
put {button.r4a} comb region yes tree {- {n {- {l button.s4a} {l button.s4}} {l body.s2a}} {l body.s2}}
|
||||
attr set {button.r4a} {region} {R} {region_id} {1034} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {button.s3a} tgc V {-228.6000000000000227373675 127 38.10000000000002273736754} H {317.5978069738537215016549 0 328.8821567148312965400692} A {11.41951933037608313270539 0 -11.02770163103658696002185} B {0 15.87500000000000177635684 0} C {11.41951933037608490906223 0 -11.02770163103658873637869} D {0 15.87500000000000177635684 0}
|
||||
put {button.r3a} comb region yes tree {- {n {- {l button.s3a} {l button.s3}} {l body.s2a}} {l body.s2}}
|
||||
attr set {button.r3a} {region} {R} {region_id} {1033} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {button.s2a} tgc V {-228.6000000000000227373675 127 38.10000000000002273736754} H {391.8968898810059044990339 0 235.4754078488767561339046} A {8.176229439197108206371922 0 -13.60753089864603637693108} B {0 15.87500000000000177635684 0} C {8.176229439197108206371922 0 -13.60753089864603637693108} D {0 15.87500000000000177635684 0}
|
||||
put {button.r2a} comb region yes tree {- {n {- {l button.s2a} {l button.s2}} {l body.s2a}} {l body.s2}}
|
||||
attr set {button.r2a} {region} {R} {region_id} {1032} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {button.s1a} tgc V {-228.6000000000000227373675 127 38.10000000000002273736754} H {439.4888473829994381958386 0 126.0213990795319745075176} A {4.375743023594861114133892 0 -15.26002942302081066827668} B {0 15.875 0} C {4.375743023594861114133892 0 -15.26002942302081066827668} D {0 15.875 0}
|
||||
put {button.r1a} comb region yes tree {- {n {- {l button.s1a} {l button.s1}} {l body.s2a}} {l body.s2}}
|
||||
attr set {button.r1a} {region} {R} {region_id} {1031} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {rt_arm.s4i} tgc V {-117.4750000000000227373675 -266.6999999999999886313162 11.11250000000000248689958} H {0 0 114.3000000000000113686838} A {0 23.81249999999999644728632 0} B {23.81249999999999644728632 0 0} C {0 23.81249999999999644728632 0} D {23.81249999999999644728632 0 0}
|
||||
put {lt_arm.s4i} tgc V {-117.4749999999999943156581 266.6999999999999886313162 11.11250000000000248689958} H {0 0 114.3000000000000113686838} A {0 -23.81249999999999644728632 0} B {23.81249999999999644728632 0 0} C {0 -23.81249999999999644728632 0} D {23.81249999999999644728632 0 0}
|
||||
put {missile2.r} comb region yes tree {u {l missile2.s1} {l missile2.s2}}
|
||||
attr set {missile2.r} {region} {R} {region_id} {1024} {material_id} {1} {los} {100} {color} {255/150/50}
|
||||
put {missile1.r} comb region yes tree {u {l missile1.s1} {l missile1.s2}}
|
||||
attr set {missile1.r} {region} {R} {region_id} {1023} {material_id} {1} {los} {100} {color} {255/150/50}
|
||||
put {rt_ear.s2i} arb8 V1 {-104.7750000000000056843419 -152.3999999999999772626325 495.2999999999999545252649} V2 {-104.7750000000000198951966 -203.1999999999999886313162 495.2999999999999545252649} V3 {-104.7750000000000198951966 -203.1999999999999886313162 596.8999999999999772626325} V4 {-104.7750000000000056843419 -152.3999999999999772626325 596.8999999999999772626325} V5 {-130.1750000000000113686838 -152.399999999999948840923 495.2999999999999545252649} V6 {-130.1750000000000113686838 -203.1999999999999602096068 495.2999999999999545252649} V7 {-130.1750000000000113686838 -203.1999999999999602096068 596.8999999999999772626325} V8 {-130.1750000000000113686838 -152.399999999999948840923 596.8999999999999772626325}
|
||||
put {lt_ear.s2i} arb8 V1 {-104.7749999999999914734872 152.3999999999999772626325 495.2999999999999545252649} V2 {-104.7749999999999914734872 203.1999999999999886313162 495.2999999999999545252649} V3 {-104.7749999999999914734872 203.1999999999999886313162 596.8999999999999772626325} V4 {-104.7749999999999914734872 152.3999999999999772626325 596.8999999999999772626325} V5 {-130.1749999999999829469743 152.3999999999999772626325 495.2999999999999545252649} V6 {-130.1749999999999829469743 203.1999999999999886313162 495.2999999999999545252649} V7 {-130.1749999999999829469743 203.1999999999999886313162 596.8999999999999772626325} V8 {-130.1749999999999829469743 152.3999999999999772626325 596.8999999999999772626325}
|
||||
put {rt_leg.s1i} arb8 V1 {25.40000000000000213162821 -123.8250000000000312638804 -241.2999999999999829469743} V2 {25.40000000000000213162821 -130.1750000000000113686838 -241.2999999999999829469743} V3 {25.40000000000000213162821 -130.1750000000000113686838 -12.7000000000000010658141} V4 {25.40000000000000213162821 -123.8250000000000312638804 -12.7000000000000010658141} V5 {-76.20000000000003126388037 -123.8250000000000170530257 -241.2999999999999829469743} V6 {-76.20000000000003126388037 -130.1750000000000113686838 -241.2999999999999829469743} V7 {-76.20000000000003126388037 -130.1750000000000113686838 -12.7000000000000010658141} V8 {-76.20000000000003126388037 -123.8250000000000170530257 -12.7000000000000010658141}
|
||||
put {lt_leg.s1i} arb8 V1 {25.40000000000001634248292 123.8250000000000312638804 -241.2999999999999829469743} V2 {25.40000000000001634248292 130.1750000000000113686838 -241.2999999999999829469743} V3 {25.40000000000001634248292 130.1750000000000113686838 -12.7000000000000010658141} V4 {25.40000000000001634248292 123.8250000000000312638804 -12.7000000000000010658141} V5 {-76.20000000000001705302566 123.8250000000000312638804 -241.2999999999999829469743} V6 {-76.20000000000001705302566 130.1750000000000113686838 -241.2999999999999829469743} V7 {-76.20000000000001705302566 130.1750000000000113686838 -12.7000000000000010658141} V8 {-76.20000000000001705302566 123.8250000000000312638804 -12.7000000000000010658141}
|
||||
put {annual_gift_man} comb region no tree {u {u {u {l body {0.984807753012208 0 -0.17364817766693 75.4019057580597 0 1 0 0 0.17364817766693 0 0.984807753012208 27.1522734574961 0 0 0 1}} {l head {0.984807753012208 0 -0.17364817766693 75.4019057580597 0 1 0 0 0.17364817766693 0 0.984807753012208 27.1522734574961 0 0 0 1}}} {u {l hat {0.984807753012208 0 -0.17364817766693 75.4019057580597 0 1 0 0 0.17364817766693 0 0.984807753012208 27.1522734574961 0 0 0 1}} {l legs {0.984807753012208 0 -0.17364817766693 75.4019057580597 0 1 0 0 0.17364817766693 0 0.984807753012208 27.1522734574961 0 0 0 1}}}} {l arms {0.984807753012208 0 -0.17364817766693 75.4019057580597 0 1 0 0 0.17364817766693 0 0.984807753012208 27.1522734574961 0 0 0 1}}}
|
||||
put {button.s6} tgc V {-228.600000000000051159077 -126.9999999999999715782906 38.10000000000002273736754} H {317.5978069738537215016549 0 328.8821567148312965400692} A {9.135615464300869348335254 0 -8.822161304829272410188423} B {0 -12.69999999999999396038675 0} C {9.135615464300869348335254 0 -8.822161304829272410188423} D {0 -12.69999999999999396038675 0}
|
||||
put {button.r6} comb region yes tree {- {n {l button.s6} {l body.s4i}} {l body.s2}}
|
||||
attr set {button.r6} {region} {R} {region_id} {1010} {material_id} {1} {los} {100}
|
||||
put {button.s5} tgc V {-228.600000000000051159077 -126.9999999999999715782906 38.10000000000002273736754} H {391.8968898810059044990339 0 235.4754078488767561339046} A {6.540983551357687275640274 0 -10.8860247189168308779017} B {0 -12.69999999999999396038675 0} C {6.540983551357687275640274 0 -10.8860247189168308779017} D {0 -12.69999999999999396038675 0}
|
||||
put {button.r5} comb region yes tree {- {n {l button.s5} {l body.s4i}} {l body.s2}}
|
||||
attr set {button.r5} {region} {R} {region_id} {1009} {material_id} {1} {los} {100}
|
||||
put {button.s4} tgc V {-228.600000000000051159077 -126.9999999999999715782906 38.10000000000002273736754} H {439.4888473829994381958386 0 126.0213990795319745075176} A {3.500594418875888624853587 0 -12.20802353841664888989271} B {0 -12.69999999999999396038675 0} C {3.500594418875888624853587 0 -12.20802353841664888989271} D {0 -12.69999999999999396038675 0}
|
||||
put {button.r4} comb region yes tree {- {n {l button.s4} {l body.s4i}} {l body.s2}}
|
||||
attr set {button.r4} {region} {R} {region_id} {1008} {material_id} {1} {los} {100}
|
||||
put {button.s3} tgc V {-228.6000000000000227373675 127 38.10000000000002273736754} H {317.5978069738537215016549 0 328.8821567148312965400692} A {9.135615464300869348335254 0 -8.822161304829272410188423} B {0 12.69999999999999928945726 0} C {9.135615464300869348335254 0 -8.822161304829272410188423} D {0 12.69999999999999928945726 0}
|
||||
put {button.r3} comb region yes tree {- {n {l button.s3} {l body.s4i}} {l body.s2}}
|
||||
attr set {button.r3} {region} {R} {region_id} {1007} {material_id} {1} {los} {100}
|
||||
put {button.s2} tgc V {-228.6000000000000227373675 127 38.10000000000002273736754} H {391.8968898810059044990339 0 235.4754078488767561339046} A {6.540983551357687275640274 0 -10.8860247189168308779017} B {0 12.69999999999999928945726 0} C {6.540983551357687275640274 0 -10.8860247189168308779017} D {0 12.69999999999999928945726 0}
|
||||
put {button.r2} comb region yes tree {- {n {l button.s2} {l body.s4i}} {l body.s2}}
|
||||
attr set {button.r2} {region} {R} {region_id} {1006} {material_id} {1} {los} {100}
|
||||
put {button.s1} tgc V {-228.6000000000000227373675 127 38.10000000000002273736754} H {439.4888473829994381958386 0 126.0213990795319745075176} A {3.500594418875888624853587 0 -12.20802353841664888989271} B {0 12.69999999999999928945726 0} C {3.500594418875888624853587 0 -12.20802353841664888989271} D {0 12.69999999999999928945726 0}
|
||||
put {button.r1} comb region yes tree {- {n {l button.s1} {l body.s4i}} {l body.s2}}
|
||||
attr set {button.r1} {region} {R} {region_id} {1005} {material_id} {1} {los} {100}
|
||||
put {rt_arm.s5} tgc V {-117.4750000000000227373675 -228.5999999999999658939487 304.7999999999999545252649} H {0 -41.27499999999999857891453 0} A {0 0 50.79999999999999715782906} B {50.79999999999999715782906 0 0} C {0 0 50.79999999999999715782906} D {50.79999999999999715782906 0 0}
|
||||
put {lt_arm.s5} tgc V {-117.4749999999999943156581 228.5999999999999943156581 304.7999999999999545252649} H {0 41.27499999999999857891453 0} A {0 0 50.79999999999999715782906} B {50.79999999999999715782906 0 0} C {0 0 50.79999999999999715782906} D {50.79999999999999715782906 0 0}
|
||||
put {rt_arm.s4} tgc V {-117.4750000000000227373675 -266.6999999999999886313162 12.70000000000000284217094} H {0 0 114.2999999999999971578291} A {0 25.39999999999999502620085 0} B {25.39999999999999857891453 0 0} C {0 25.39999999999999502620085 0} D {25.39999999999999857891453 0 0}
|
||||
put {lt_arm.s4} tgc V {-117.4749999999999943156581 266.6999999999999886313162 12.70000000000000284217094} H {0 0 114.2999999999999971578291} A {0 -25.39999999999999502620085 0} B {25.39999999999999857891453 0 0} C {0 -25.39999999999999502620085 0} D {25.39999999999999857891453 0 0}
|
||||
put {rt_arm.s3} arb8 V1 {-79.37500000000002842170943 -228.5999999999999943156581 -101.5999999999999943156581} V2 {-79.37500000000002842170943 -203.1999999999999886313162 -101.5999999999999943156581} V3 {-79.37500000000002842170943 -203.1999999999999886313162 -38.10000000000001563194019} V4 {-79.37500000000002842170943 -228.5999999999999943156581 -25.4000000000000198951966} V5 {-155.5750000000000170530257 -228.5999999999999658939487 -101.5999999999999943156581} V6 {-155.5749999999999602096068 -203.1999999999999602096068 -101.5999999999999801048034} V7 {-155.5750000000000454747351 -203.1999999999999602096068 -38.10000000000001563194019} V8 {-155.5750000000000738964445 -228.5999999999999658939487 -25.400000000000037658765}
|
||||
put {rt_eye.s2} tgc V {-76.19999999999998863131623 -44.44999999999998863131623 603.25} H {50.79999999999999715782906 0 0} A {0 0 -6.349999999999998756550212} B {0 -6.349999999999996980193373 0} C {0 0 -6.349999999999998756550212} D {0 -6.349999999999996980193373 0}
|
||||
put {lt_arm.s3} arb8 V1 {-79.375 228.5999999999999943156581 -101.5999999999999943156581} V2 {-79.375 203.1999999999999886313162 -101.5999999999999943156581} V3 {-79.375 203.1999999999999886313162 -38.10000000000001563194019} V4 {-79.375 228.5999999999999943156581 -25.4000000000000198951966} V5 {-155.5749999999999886313162 228.5999999999999943156581 -101.5999999999999943156581} V6 {-155.5749999999999317878974 203.1999999999999886313162 -101.5999999999999801048034} V7 {-155.5750000000000170530257 203.1999999999999886313162 -38.10000000000001563194019} V8 {-155.5750000000000454747351 228.5999999999999943156581 -25.400000000000037658765}
|
||||
put {rt_arm.r3} comb region yes tree {l rt_arm.gray.s2}
|
||||
attr set {rt_arm.r3} {region} {R} {region_id} {1022} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {rt_arm.s2} arb8 V1 {-79.37500000000002842170943 -228.5999999999999943156581 -101.5999999999999943156581} V2 {-79.37500000000002842170943 -266.6999999999999886313162 -101.5999999999999943156581} V3 {-79.37500000000002842170943 -266.6999999999999886313162 304.7999999999999545252649} V4 {-79.37500000000002842170943 -228.5999999999999943156581 304.7999999999999545252649} V5 {-155.5750000000000170530257 -228.5999999999999658939487 -101.5999999999999943156581} V6 {-155.5750000000000170530257 -266.6999999999999886313162 -101.5999999999999943156581} V7 {-155.5750000000000170530257 -266.6999999999999886313162 304.7999999999999545252649} V8 {-155.5750000000000170530257 -228.5999999999999658939487 304.7999999999999545252649}
|
||||
put {lt_eye.s2} tgc V {-76.19999999999998863131623 44.44999999999999573674359 603.25} H {50.79999999999999715782906 0 0} A {0 0 -6.349999999999998756550212} B {0 6.349999999999999644728632 0} C {0 0 -6.349999999999998756550212} D {0 6.349999999999999644728632 0}
|
||||
put {rt_eye.r2} comb region yes tree {n {l rt_eye.s1} {l rt_eye.s2}}
|
||||
attr set {rt_eye.r2} {region} {R} {region_id} {1030} {material_id} {1} {los} {100} {color} {0/0/0}
|
||||
put {lt_arm.r3} comb region yes tree {l lt_arm.gray.s2}
|
||||
attr set {lt_arm.r3} {region} {R} {region_id} {1021} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {lt_arm.s2} arb8 V1 {-79.375 228.5999999999999943156581 -101.5999999999999943156581} V2 {-79.375 266.6999999999999886313162 -101.5999999999999943156581} V3 {-79.375 266.6999999999999886313162 304.7999999999999545252649} V4 {-79.375 228.5999999999999943156581 304.7999999999999545252649} V5 {-155.5749999999999886313162 228.5999999999999943156581 -101.5999999999999943156581} V6 {-155.5749999999999886313162 266.6999999999999886313162 -101.5999999999999943156581} V7 {-155.5749999999999886313162 266.6999999999999886313162 304.7999999999999545252649} V8 {-155.5749999999999886313162 228.5999999999999943156581 304.7999999999999545252649}
|
||||
put {rt_eye.s1} ell V {-50.80000000000000426325641 -44.44999999999998863131623 603.25} A {19.04999999999999715782906 0 0} B {0 -19.04999999999999715782906 0} C {0 0 19.04999999999999715782906}
|
||||
put {rt_arm.r2} comb region yes tree {n {l rt_arm.c} {l rt_arm.gray.s}}
|
||||
attr set {rt_arm.r2} {region} {R} {region_id} {1019} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {rt_arm.s1} tgc V {-117.4750000000000227373675 -228.5999999999999658939487 304.7999999999999545252649} H {0 -38.09999999999999431565811 0} A {0 0 76.19999999999998863131623} B {76.19999999999998863131623 0 0} C {0 0 76.19999999999998863131623} D {76.19999999999998863131623 0 0}
|
||||
put {lt_eye.r2} comb region yes tree {n {l lt_eye.s1} {l lt_eye.s2}}
|
||||
attr set {lt_eye.r2} {region} {R} {region_id} {1028} {material_id} {1} {los} {100} {color} {0/0/0}
|
||||
put {lt_eye.s1} ell V {-50.79999999999999715782906 44.44999999999999573674359 603.25} A {19.04999999999999715782906 0 0} B {0 19.04999999999999715782906 0} C {0 0 19.04999999999999715782906}
|
||||
put {rt_eye.r1} comb region yes tree {- {l rt_eye.s1} {l rt_eye.s2}}
|
||||
attr set {rt_eye.r1} {region} {R} {region_id} {1029} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {lt_arm.r2} comb region yes tree {n {l lt_arm.c} {l lt_arm.gray.s}}
|
||||
attr set {lt_arm.r2} {region} {R} {region_id} {1020} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {lt_arm.s1} tgc V {-117.4749999999999943156581 228.5999999999999943156581 304.7999999999999545252649} H {0 38.09999999999999431565811 0} A {0 0 76.19999999999998863131623} B {76.19999999999998863131623 0 0} C {0 0 76.19999999999998863131623} D {76.19999999999998863131623 0 0}
|
||||
put {rt_arm.r1} comb region yes tree {- {- {l rt_arm.c} {l rt_arm.gray.s}} {l rt_arm.gray.s2}}
|
||||
attr set {rt_arm.r1} {region} {R} {region_id} {1018} {material_id} {1} {los} {100} {color} {255/0/0}
|
||||
put {lt_eye.r1} comb region yes tree {- {l lt_eye.s1} {l lt_eye.s2}}
|
||||
attr set {lt_eye.r1} {region} {R} {region_id} {1027} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {lt_arm.r1} comb region yes tree {- {- {l lt_arm.c} {l lt_arm.gray.s}} {l lt_arm.gray.s2}}
|
||||
attr set {lt_arm.r1} {region} {R} {region_id} {1017} {material_id} {1} {los} {100} {color} {255/0/0}
|
||||
put {rt_ear.s2} tgc V {-130.1750000000000113686838 -152.3999999999999772626325 546.1000000000000227373675} H {25.39999999999999857891453 0 0} A {0 0 -50.7999999999999900524017} B {0 -50.79999999999997584154698 0} C {0 0 -50.7999999999999900524017} D {0 -50.79999999999997584154698 0}
|
||||
put {lt_ear.s2} tgc V {-130.1749999999999829469743 152.4000000000000056843419 546.1000000000000227373675} H {25.39999999999999857891453 0 0} A {0 0 -50.7999999999999900524017} B {0 50.79999999999999715782906 0} C {0 0 -50.7999999999999900524017} D {0 50.79999999999999715782906 0}
|
||||
put {rt_ear.s1} arb8 V1 {-104.7750000000000056843419 -76.19999999999997442046151 533.3999999999999772626325} V2 {-104.7750000000000056843419 -152.4000000000000056843419 533.3999999999999772626325} V3 {-104.7750000000000056843419 -152.4000000000000056843419 558.7999999999999545252649} V4 {-104.7750000000000056843419 -76.19999999999997442046151 558.7999999999999545252649} V5 {-130.1749999999999829469743 -76.19999999999997442046151 533.3999999999999772626325} V6 {-130.1750000000000113686838 -152.3999999999999772626325 533.3999999999999772626325} V7 {-130.1750000000000113686838 -152.3999999999999772626325 558.7999999999999545252649} V8 {-130.1749999999999829469743 -76.19999999999997442046151 558.7999999999999545252649}
|
||||
put {rt_leg.s3} tgc V {-25.40000000000001278976924 -101.5999999999999943156581 -12.69999999999999928945726} H {0 -25.39999999999998792077349 0} A {0 0 76.19999999999997442046151} B {76.19999999999998863131623 0 0} C {0 0 76.19999999999997442046151} D {76.19999999999998863131623 0 0}
|
||||
put {lt_ear.s1} arb8 V1 {-104.7749999999999914734872 76.19999999999998863131623 533.3999999999999772626325} V2 {-104.7749999999999914734872 152.4000000000000056843419 533.3999999999999772626325} V3 {-104.7749999999999914734872 152.4000000000000056843419 558.7999999999999545252649} V4 {-104.7749999999999914734872 76.19999999999998863131623 558.7999999999999545252649} V5 {-130.1749999999999829469743 76.19999999999998863131623 533.3999999999999772626325} V6 {-130.1749999999999829469743 152.4000000000000056843419 533.3999999999999772626325} V7 {-130.1749999999999829469743 152.4000000000000056843419 558.7999999999999545252649} V8 {-130.1749999999999829469743 76.19999999999998863131623 558.7999999999999545252649}
|
||||
put {lt_leg.s3} tgc V {-25.39999999999999857891453 101.5999999999999943156581 -12.69999999999999928945726} H {0 25.39999999999999857891453 0} A {0 0 76.19999999999997442046151} B {76.19999999999998863131623 0 0} C {0 0 76.19999999999997442046151} D {76.19999999999998863131623 0 0}
|
||||
put {rt_leg.r3} comb region yes tree {n {l rt_leg.c} {l rt_leg.black.s}}
|
||||
attr set {rt_leg.r3} {region} {R} {region_id} {1014} {material_id} {1} {los} {100} {color} {0/0/0}
|
||||
put {rt_leg.s2} arb8 V1 {76.19999999999998863131623 -76.20000000000000284217094 -317.4999999999999431565811} V2 {76.19999999999994599875208 -152.3999999999999772626325 -317.4999999999999431565811} V3 {101.5999999999999801048034 -165.100000000000051159077 -355.5999999999999090505298} V4 {101.6000000000000369482223 -63.50000000000000710542736 -355.5999999999999090505298} V5 {-126.9999999999999857891453 -76.19999999999990336618794 -317.4999999999998863131623} V6 {-126.9999999999999857891453 -152.399999999999948840923 -317.4999999999999431565811} V7 {-127.0000000000000284217094 -165.0999999999999943156581 -355.5999999999999090505298} V8 {-127.0000000000000426325641 -63.49999999999993605115378 -355.5999999999999090505298}
|
||||
put {lt_leg.r3} comb region yes tree {n {l lt_leg.c} {l lt_leg.black.s}}
|
||||
attr set {lt_leg.r3} {region} {R} {region_id} {1013} {material_id} {1} {los} {100} {color} {0/0/0}
|
||||
put {lt_leg.s2} arb8 V1 {76.20000000000000284217094 76.19999999999998863131623 -317.4999999999999431565811} V2 {76.1999999999999602096068 152.3999999999999772626325 -317.4999999999999431565811} V3 {101.5999999999999943156581 165.100000000000051159077 -355.5999999999999090505298} V4 {101.600000000000051159077 63.49999999999999289457264 -355.5999999999999090505298} V5 {-126.9999999999999715782906 76.19999999999991757704265 -317.4999999999998863131623} V6 {-126.9999999999999715782906 152.3999999999999772626325 -317.4999999999999431565811} V7 {-127.0000000000000142108547 165.1000000000000227373675 -355.5999999999999090505298} V8 {-127.0000000000000284217094 63.4999999999999502620085 -355.5999999999999090505298}
|
||||
put {rt_leg.r2} comb region yes tree {n {l rt_leg.c} {l rt_leg.white.s}}
|
||||
attr set {rt_leg.r2} {region} {R} {region_id} {1015} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {rt_leg.s1} arb8 V1 {50.79999999999998294697434 -101.5999999999999943156581 -317.5} V2 {50.79999999999998294697434 -127 -317.5} V3 {50.79999999999998294697434 -127 -12.69999999999999928945726} V4 {50.79999999999998294697434 -101.5999999999999943156581 -12.69999999999999928945726} V5 {-101.6000000000000085265128 -101.5999999999999801048034 -317.5} V6 {-101.6000000000000085265128 -126.9999999999999857891453 -317.5} V7 {-101.6000000000000085265128 -126.9999999999999857891453 -12.69999999999999928945726} V8 {-101.6000000000000085265128 -101.5999999999999801048034 -12.69999999999999928945726}
|
||||
put {lt_leg.r2} comb region yes tree {n {l lt_leg.c} {l lt_leg.white.s}}
|
||||
attr set {lt_leg.r2} {region} {R} {region_id} {1012} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {lt_leg.s1} arb8 V1 {50.79999999999999715782906 101.5999999999999943156581 -317.5} V2 {50.79999999999999715782906 127 -317.5} V3 {50.79999999999999715782906 127 -12.69999999999999928945726} V4 {50.79999999999999715782906 101.5999999999999943156581 -12.69999999999999928945726} V5 {-101.5999999999999943156581 101.5999999999999943156581 -317.5} V6 {-101.5999999999999943156581 127 -317.5} V7 {-101.5999999999999943156581 127 -12.69999999999999928945726} V8 {-101.5999999999999943156581 101.5999999999999943156581 -12.69999999999999928945726}
|
||||
put {rt_leg.r1} comb region yes tree {- {- {- {- {l rt_leg.c} {l rt_leg.white.s}} {l rt_leg.black.s}} {l rt_leg.s1i}} {l rt_leg.s1i2}}
|
||||
attr set {rt_leg.r1} {region} {R} {region_id} {1016} {material_id} {1} {los} {100} {color} {255/0/0}
|
||||
put {lt_leg.r1} comb region yes tree {- {- {- {- {l lt_leg.c} {l lt_leg.white.s}} {l lt_leg.black.s}} {l lt_leg.s1i}} {l lt_leg.s1i2}}
|
||||
attr set {lt_leg.r1} {region} {R} {region_id} {1011} {material_id} {1} {los} {100} {color} {255/0/0}
|
||||
put {body.s3i2} arb8 V1 {-6.151326253166899959978764 231.3729373086425198380311 390.9270626913569799398829} V2 {-6.151326253166907065406122 175.6740115273925368910568 446.6259884726068776217289} V3 {-6.151326253166899959978764 222.1160604959457600671158 493.068037441160242906335} V4 {-6.151326253166892854551406 277.8149862771957714357995 437.369111659910345224489} V5 {-231.13999999999995793587 231.37293730864257668145 390.9270626913569799398829} V6 {-231.13999999999995793587 175.6740115273925653127662 446.6259884726068776217289} V7 {-231.13999999999995793587 222.1160604959457884888252 493.068037441160242906335} V8 {-231.13999999999995793587 277.8149862771958282792184 437.369111659910345224489}
|
||||
put {body.s3i1} arb8 V1 {-6.151326253166928381688194 -231.37293730864257668145 390.9270626913570367833017} V2 {-6.151326253166928381688194 -175.6740115273925368910568 446.6259884726068776217289} V3 {-6.151326253166928381688194 -222.1160604959457600671158 493.068037441160242906335} V4 {-6.151326253166928381688194 -277.8149862771958282792184 437.369111659910345224489} V5 {-231.1399999999999863575795 -231.37293730864257668145 390.9270626913570367833017} V6 {-231.1399999999999863575795 -175.6740115273925368910568 446.6259884726068776217289} V7 {-231.1399999999999863575795 -222.1160604959457600671158 493.068037441160242906335} V8 {-231.1399999999999863575795 -277.8149862771958282792184 437.369111659910345224489}
|
||||
put {rt_ear.r} comb region yes tree {u {l rt_ear.s1} {n {l rt_ear.s2} {l rt_ear.s2i}}}
|
||||
attr set {rt_ear.r} {region} {R} {region_id} {1026} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {lt_ear.r} comb region yes tree {u {l lt_ear.s1} {n {l lt_ear.s2} {l lt_ear.s2i}}}
|
||||
attr set {lt_ear.r} {region} {R} {region_id} {1025} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {rt_arm.c} comb region no tree {u {u {u {u {l rt_arm.s1} {l rt_arm.s2}} {l rt_arm.s3}} {- {l rt_arm.s4} {l rt_arm.s4i}}} {l rt_arm.s5}}
|
||||
put {lt_arm.c} comb region no tree {u {u {u {u {l lt_arm.s1} {l lt_arm.s2}} {l lt_arm.s3}} {- {l lt_arm.s4} {l lt_arm.s4i}}} {l lt_arm.s5}}
|
||||
put {rt_leg.c} comb region no tree {u {u {l rt_leg.s1} {l rt_leg.s2}} {l rt_leg.s3}}
|
||||
put {lt_leg.c} comb region no tree {u {u {l lt_leg.s1} {l lt_leg.s2}} {l lt_leg.s3}}
|
||||
put {body.s4i} tgc V {-228.6000000000000227373675 -228.5999999999999943156581 38.09999999999999431565811} H {0 457.1999999999999886313162 0} A {0 0 381.0000000000000568434189} B {457.1999999999999886313162 0 0} C {0 0 381.0000000000000568434189} D {457.1999999999999886313162 0 0}
|
||||
put {body.s2i} arb8 V1 {228.5999999999999943156581 -228.5999999999999943156581 342.8999999999999772626325} V2 {228.5999999999999943156581 228.5999999999999943156581 342.8999999999999772626325} V3 {228.5999999999999943156581 228.5999999999999943156581 38.09999999999999431565811} V4 {228.5999999999999943156581 -228.5999999999999943156581 38.09999999999999431565811} V5 {-228.5999999999999943156581 -228.5999999999999943156581 342.8999999999999772626325} V6 {-228.5999999999999943156581 228.5999999999999943156581 342.8999999999999772626325} V7 {-228.5999999999999943156581 228.5999999999999943156581 38.09999999999999431565811} V8 {-228.5999999999999943156581 -228.5999999999999943156581 38.09999999999999431565811}
|
||||
put {buttons} comb region no tree {u {u {u {u {l button.r1} {l button.r1a}} {u {l button.r2} {l button.r2a}}} {u {u {l button.r3} {l button.r3a}} {u {l button.r4} {l button.r4a}}}} {u {u {l button.r5} {l button.r5a}} {u {l button.r6} {l button.r6a}}}}
|
||||
attr set {buttons} {color} {0/255/0}
|
||||
put {head.s9i} arb8 V1 {-98.42500000000002557953849 -76.1999999999999602096068 514.3499999999996816768544} V2 {-98.42500000000002557953849 76.1999999999999602096068 514.3499999999996816768544} V3 {-98.42500000000002557953849 76.1999999999999602096068 457.2000000000000454747351} V4 {-98.42500000000002557953849 -76.1999999999999602096068 457.2000000000000454747351} V5 {-9.525000000000012789769244 -76.1999999999999602096068 514.3499999999996816768544} V6 {-9.525000000000012789769244 76.1999999999999602096068 514.3499999999996816768544} V7 {-9.525000000000012789769244 76.1999999999999602096068 457.2000000000000454747351} V8 {-9.525000000000012789769244 -76.1999999999999602096068 457.2000000000000454747351}
|
||||
put {body.s2a} tgc V {-228.6000000000000227373675 -228.5999999999999943156581 38.09999999999999431565811} H {0 457.1999999999999886313162 0} A {0 0 361.9499999999999886313162} B {438.1499999999999772626325 0 0} C {0 0 361.9500000000000454747351} D {438.1499999999999772626325 0 0}
|
||||
put {head.s8i} arb8 V1 {-98.42500000000001136868377 -69.84999999999999431565811 514.3499999999997953636921} V2 {-98.42500000000001136868377 69.84999999999999431565811 514.3499999999997953636921} V3 {-98.42500000000001136868377 25.39999999999999857891453 546.1000000000000227373675} V4 {-98.42500000000001136868377 -25.39999999999999857891453 546.1000000000000227373675} V5 {-9.525000000000019895196601 -69.85000000000027853275242 514.3499999999994543031789} V6 {-9.525000000000019895196601 69.85000000000027853275242 514.3499999999995679900167} V7 {-9.525000000000019895196601 25.40000000000017266188479 546.1000000000000227373675} V8 {-9.525000000000019895196601 -25.40000000000007673861546 546.1000000000000227373675}
|
||||
put {head.s7i} arb8 V1 {-98.42500000000001136868377 -63.49999999999999289457264 514.3499999999997953636921} V2 {-98.42500000000001136868377 63.49999999999999289457264 514.3499999999997953636921} V3 {-98.42500000000001136868377 63.49999999999999289457264 463.5499999999998408384272} V4 {-98.42500000000001136868377 -63.49999999999999289457264 463.5499999999998408384272} V5 {-9.525000000000019895196601 -63.49999999999999289457264 514.3499999999997953636921} V6 {-9.525000000000019895196601 63.49999999999999289457264 514.3499999999997953636921} V7 {-9.525000000000019895196601 63.49999999999999289457264 463.5499999999998408384272} V8 {-9.525000000000019895196601 -63.49999999999999289457264 463.5499999999998408384272}
|
||||
put {head.s4i} arb8 V1 {-3.110602869834276076328758E-15 -25.39999999999999502620085 587.3749999999998863131623} V2 {-7.776507174585689796391442E-15 -63.49999999999998578914528 587.3749999999998863131623} V3 {-7.776507174585689796391442E-15 -63.49999999999998578914528 619.125} V4 {-3.110602869834276076328758E-15 -25.39999999999999502620085 619.125} V5 {-50.7999999999999900524017 -25.39999999999998792077349 587.3749999999998863131623} V6 {-50.79999999999999715782906 -63.49999999999997868371793 587.3749999999998863131623} V7 {-50.79999999999999715782906 -63.49999999999997868371793 619.125} V8 {-50.7999999999999900524017 -25.39999999999998792077349 619.125}
|
||||
put {head.s3i} arb8 V1 {0 25.39999999999999502620085 587.3749999999998863131623} V2 {0 63.49999999999998578914528 587.3749999999998863131623} V3 {0 63.49999999999998578914528 619.125} V4 {0 25.39999999999999502620085 619.125} V5 {-50.7999999999999900524017 25.39999999999999502620085 587.3749999999998863131623} V6 {-50.7999999999999900524017 63.49999999999998578914528 587.3749999999998863131623} V7 {-50.7999999999999900524017 63.49999999999998578914528 619.125} V8 {-50.7999999999999900524017 25.39999999999999502620085 619.125}
|
||||
put {head.s2i} arb8 V1 {-98.42500000000001136868377 -107.9499999999999886313162 527.0499999999998408384272} V2 {-98.42500000000001136868377 107.9499999999999886313162 527.0499999999998408384272} V3 {-98.42500000000001136868377 107.9499999999999886313162 565.1499999999998635757947} V4 {-98.42500000000001136868377 -107.9499999999999886313162 565.1499999999998635757947} V5 {-136.5249999999999772626325 -107.9499999999999886313162 527.0499999999998408384272} V6 {-136.5249999999999772626325 107.9499999999999886313162 527.0499999999998408384272} V7 {-136.5249999999999772626325 107.9499999999999886313162 565.1499999999998635757947} V8 {-136.5249999999999772626325 -107.9499999999999886313162 565.1499999999998635757947}
|
||||
put {head.s1i} tgc V {-117.4749999999999943156581 0 444.5} H {0 0 203.2000000000000454747351} A {0 -100.0125000000000028421709 0} B {100.0125000000000170530257 0 0} C {0 -100.0125000000000028421709 0} D {100.0125000000000170530257 0 0}
|
||||
put {beard.r} comb region yes tree {- {n {- {l head.s8} {l head.s1}} {l head.s9}} {l head.s9i}}
|
||||
attr set {beard.r} {region} {R} {region_id} {1038} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {body.s5} arb8 V1 {31.75 -25.39999999999999857891453 444.5} V2 {31.75 25.39999999999999857891453 444.5} V3 {31.75 25.39999999999999857891453 342.8999999999999772626325} V4 {31.75 -25.39999999999999857891453 342.8999999999999772626325} V5 {-228.5999999999999943156581 -25.39999999999999857891453 444.5} V6 {-228.5999999999999943156581 25.39999999999999857891453 444.5} V7 {-228.5999999999999943156581 25.39999999999999857891453 342.8999999999999772626325} V8 {-228.5999999999999943156581 -25.39999999999999857891453 342.8999999999999772626325}
|
||||
put {body.s4} arb8 V1 {228.5999999999999943156581 -25.39999999999999857891453 38.09999999999999431565811} V2 {228.5999999999999943156581 25.39999999999999857891453 38.09999999999999431565811} V3 {228.5999999999999943156581 25.39999999999999857891453 342.8999999999999772626325} V4 {228.5999999999999943156581 -25.39999999999999857891453 342.8999999999999772626325} V5 {-228.5999999999999943156581 -25.39999999999999857891453 38.09999999999999431565811} V6 {-228.5999999999999943156581 25.39999999999999857891453 38.09999999999999431565811} V7 {-228.5999999999999943156581 25.39999999999999857891453 342.8999999999999772626325} V8 {-228.5999999999999943156581 -25.39999999999999857891453 342.8999999999999772626325}
|
||||
put {body.r4} comb region yes tree {u {- {n {l body.c} {l body.white.s1}} {l body.gold.s1}} {- {n {l body.c} {l body.white.s2}} {l body.gold.s1}}}
|
||||
attr set {body.r4} {region} {R} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {body.s3} arb8 V1 {-6.349999999999999644728632 -228.600000000000051159077 342.8999999999998635757947} V2 {-6.349999999999999644728632 228.600000000000051159077 342.8999999999998635757947} V3 {-6.349999999999999644728632 228.600000000000051159077 444.5000000000000568434189} V4 {-6.349999999999999644728632 -228.600000000000051159077 444.5000000000000568434189} V5 {-228.6000000000000795807864 -228.600000000000051159077 342.8999999999998635757947} V6 {-228.6000000000000795807864 228.600000000000051159077 342.8999999999998635757947} V7 {-228.6000000000000795807864 228.600000000000051159077 444.5000000000000568434189} V8 {-228.6000000000000795807864 -228.600000000000051159077 444.5000000000000568434189}
|
||||
put {body.r3} comb region yes tree {n {l body.c} {l body.gold.c}}
|
||||
attr set {body.r3} {region} {R} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/215/0}
|
||||
put {body.s2} tgc V {-228.6000000000000227373675 -228.5999999999999943156581 38.09999999999999431565811} H {0 457.1999999999999886313162 0} A {0 0 355.5999999999999658939487} B {431.7999999999998976818461 0 0} C {0 0 355.5999999999999658939487} D {431.7999999999998976818461 0 0}
|
||||
put {body.r2} comb region yes tree {- {n {l body.c} {l body.black.s1}} {l body.gold.c}}
|
||||
attr set {body.r2} {region} {R} {region_id} {1000} {material_id} {1} {los} {100} {color} {0/0/0}
|
||||
put {body.s1} arb8 V1 {228.5999999999999658939487 -228.5999999999999658939487 -12.69999999999999928945726} V2 {228.5999999999999658939487 228.5999999999999658939487 -12.69999999999999928945726} V3 {228.5999999999999658939487 228.5999999999999658939487 38.09999999999999431565811} V4 {228.5999999999999658939487 -228.5999999999999658939487 38.09999999999999431565811} V5 {-228.5999999999999658939487 -228.5999999999999658939487 -12.69999999999999928945726} V6 {-228.5999999999999658939487 228.5999999999999658939487 -12.69999999999999928945726} V7 {-228.5999999999999658939487 228.5999999999999658939487 38.09999999999999431565811} V8 {-228.5999999999999658939487 -228.5999999999999658939487 38.09999999999999431565811}
|
||||
put {body.r1} comb region yes tree {- {- {- {- {l body.c} {l body.white.s1}} {l body.white.s2}} {l body.black.s1}} {l body.gold.s1}}
|
||||
attr set {body.r1} {region} {R} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/0/0}
|
||||
put {head.s9} arb8 V1 {-98.42500000000001136868377 -88.89999999999997726263246 514.3499999999996816768544} V2 {-98.42500000000001136868377 88.89999999999997726263246 514.3499999999996816768544} V3 {-98.42500000000001136868377 88.89999999999997726263246 444.4999999999998863131623} V4 {-98.42500000000001136868377 -88.89999999999997726263246 444.4999999999998863131623} V5 {-9.525000000000016342482922 -88.89999999999997726263246 514.3499999999996816768544} V6 {-9.525000000000016342482922 88.89999999999997726263246 514.3499999999996816768544} V7 {-9.525000000000016342482922 88.89999999999997726263246 444.4999999999998863131623} V8 {-9.525000000000016342482922 -88.89999999999997726263246 444.4999999999998863131623}
|
||||
put {head.s8} tgc V {-117.4749999999999943156581 0 444.5} H {0 0 203.1999999999999886313162} A {0 -107.9499999999999886313162 0} B {107.9499999999999744204615 0 0} C {0 -107.9499999999999886313162 0} D {107.9499999999999744204615 0 0}
|
||||
put {head.s6} ell V {-15.875 0 546.1000000000000227373675} A {25.39999999999999857891453 0 0} B {0 25.39999999999999857891453 0} C {0 0 6.349999999999999644728632}
|
||||
put {head.s5} tgc V {-15.875 0 546.1000000000000227373675} H {0 0 69.84999999999999431565811} A {0 -25.39999999999999857891453 0} B {25.39999999999999857891453 0 0} C {0 -1.587499999999999911182158 0} D {1.587499999999999911182158 0 0}
|
||||
put {head.s1} tgc V {-117.4749999999999943156581 0 444.5} H {0 0 203.1999999999999886313162} A {0 -101.6000000000000085265128 0} B {101.6000000000000227373675 0 0} C {0 -101.6000000000000085265128 0} D {101.6000000000000227373675 0 0}
|
||||
put {head.r1} comb region yes tree {u {u {- {- {- {- {- {l head.s1} {l head.s1i}} {l head.s2i}} {l head.s3i}} {l head.s4i}} {l head.s7i}} {l head.s5}} {l head.s6}}
|
||||
attr set {head.r1} {region} {R} {region_id} {1002} {material_id} {1} {los} {100} {color} {50/50/50}
|
||||
put {rt_arm} comb region no tree {u {u {l rt_arm.r1} {l rt_arm.r2}} {u {l rt_arm.r3} {l missile2.r}}}
|
||||
put {lt_arm} comb region no tree {u {u {l lt_arm.r1} {l lt_arm.r2}} {u {l lt_arm.r3} {l missile1.r}}}
|
||||
put {rt_leg} comb region no tree {u {u {l rt_leg.r1} {l rt_leg.r2}} {l rt_leg.r3}}
|
||||
put {lt_leg} comb region no tree {u {u {l lt_leg.r1} {l lt_leg.r2}} {l lt_leg.r3}}
|
||||
put {rt_leg.white.s} arb8 V1 {127 -1.555301434917138590367013E-14 -253.9999999999999147348717} V2 {126.9999999999999715782906 -203.2000000000001023181539 -253.9999999999999147348717} V3 {126.9999999999999715782906 -203.2000000000001023181539 -279.3999999999999204192136} V4 {127 -1.555301434917138590367013E-14 -279.3999999999999204192136} V5 {-152.3999999999999772626325 1.866361721900566119113798E-14 -253.9999999999999147348717} V6 {-152.4000000000000056843419 -203.2000000000000454747351 -253.9999999999999147348717} V7 {-152.4000000000000056843419 -203.2000000000000454747351 -279.3999999999999204192136} V8 {-152.3999999999999772626325 1.866361721900566119113798E-14 -279.3999999999999204192136}
|
||||
put {lt_leg.white.s} arb8 V1 {127 0 -253.9999999999999147348717} V2 {127 203.2000000000000738964445 -253.9999999999999147348717} V3 {127 203.2000000000000738964445 -279.3999999999999204192136} V4 {127 0 -279.3999999999999204192136} V5 {-152.3999999999999772626325 0 -253.9999999999999147348717} V6 {-152.3999999999999772626325 203.2000000000000738964445 -253.9999999999999147348717} V7 {-152.3999999999999772626325 203.2000000000000738964445 -279.3999999999999204192136} V8 {-152.3999999999999772626325 0 -279.3999999999999204192136}
|
||||
put {body.c} comb region no tree {u {u {u {u {l body.s1} {n {l body.s2} {l body.s2i}}} {- {- {l body.s3} {l body.s3i1}} {l body.s3i2}}} {n {l body.s4} {l body.s4i}}} {l body.s5}}
|
||||
put {hat.s3} ell V {-117.4749999999999943156581 0 889} A {38.09999999999999431565811 0 0} B {0 38.09999999999999431565811 0} C {0 0 38.09999999999999431565811}
|
||||
put {hat.r3} comb region yes tree {l hat.s3}
|
||||
attr set {hat.r3} {region} {R} {region_id} {1004} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {hat.s2} tgc V {-117.4749999999999943156581 0 685.8000000000000682121026} H {0 0 203.1999999999999886313162} A {0 -101.5999999999999943156581 0} B {101.5999999999999943156581 0 0} C {0 -12.69999999999999928945726 0} D {12.69999999999999928945726 0 0}
|
||||
put {hat.r2} comb region yes tree {l hat.s2}
|
||||
attr set {hat.r2} {region} {R} {region_id} {1003} {material_id} {1} {los} {100} {color} {255/0/0}
|
||||
put {hat.s1} tgc V {-117.4749999999999943156581 0 647.7000000000000454747351} H {0 0 38.09999999999999431565811} A {0 -114.2999999999999829469743 0} B {114.2999999999999829469743 0 0} C {0 -114.2999999999999829469743 0} D {114.2999999999999829469743 0 0}
|
||||
put {hat.r1} comb region yes tree {l hat.s1}
|
||||
attr set {hat.r1} {region} {R} {region_id} {1001} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {rt_leg.black.s} arb8 V1 {127 -1.555301434917138590367013E-14 -355.5999999999999090505298} V2 {126.9999999999999715782906 -203.2000000000001023181539 -355.5999999999999090505298} V3 {126.9999999999999715782906 -203.2000000000001023181539 -279.3999999999999204192136} V4 {127 -1.555301434917138590367013E-14 -279.3999999999999204192136} V5 {-152.3999999999999772626325 1.866361721900566119113798E-14 -355.5999999999999090505298} V6 {-152.4000000000000056843419 -203.2000000000000454747351 -355.5999999999999090505298} V7 {-152.4000000000000056843419 -203.2000000000000454747351 -279.3999999999999204192136} V8 {-152.3999999999999772626325 1.866361721900566119113798E-14 -279.3999999999999204192136}
|
||||
put {lt_leg.black.s} arb8 V1 {127 0 -355.5999999999999090505298} V2 {127 203.2000000000000738964445 -355.5999999999999090505298} V3 {127 203.2000000000000738964445 -279.3999999999999204192136} V4 {127 0 -279.3999999999999204192136} V5 {-152.3999999999999772626325 0 -355.5999999999999090505298} V6 {-152.3999999999999772626325 203.2000000000000738964445 -355.5999999999999090505298} V7 {-152.3999999999999772626325 203.2000000000000738964445 -279.3999999999999204192136} V8 {-152.3999999999999772626325 0 -279.3999999999999204192136}
|
||||
put {rt_arm.gray.s2} tgc V {-117.4750000000000227373675 -228.5999999999999658939487 304.7999999999999545252649} H {0 -41.27499999999999857891453 0} A {0 0 25.39999999999999857891453} B {25.39999999999999857891453 0 0} C {0 0 25.39999999999999857891453} D {25.39999999999999857891453 0 0}
|
||||
put {lt_arm.gray.s2} tgc V {-117.4749999999999943156581 228.5999999999999943156581 304.7999999999999545252649} H {0 41.27499999999999857891453 0} A {0 0 25.39999999999999857891453} B {25.39999999999999857891453 0 0} C {0 0 25.39999999999999857891453} D {25.39999999999999857891453 0 0}
|
||||
put {arms} comb region no tree {u {l lt_arm {-0.5 0 -0.866025403784439 87.752043073497 0 1 0 0 0.866025403784439 0 -0.5 558.936334309577 0 0 0 1}} {l rt_arm {-0.17364817766693 0 -0.984807753012208 162.295083446698 0 1 0 0 0.984807753012208 0 -0.17364817766693 473.418255337989 0 0 0 1}}}
|
||||
put {eyes} comb region no tree {u {u {l lt_eye.r1} {l lt_eye.r2}} {u {l rt_eye.r1} {l rt_eye.r2}}}
|
||||
put {body} comb region no tree {u {u {u {l body.r1} {l body.r2}} {u {l body.r3} {l body.r4}}} {l buttons}}
|
||||
put {legs} comb region no tree {u {l lt_leg {0.707106781186548 0 -0.707106781186547 -16.4197438789308 0 1 0 0 0.707106781186547 0 0.707106781186548 14.2407683632075 0 0 0 1}} {l rt_leg {0.984807753012208 0 0.17364817766693 1.8194487828801 0 1 0 0 -0.17364817766693 0 0.984807753012208 -4.60360524948499 0 0 0 1}}}
|
||||
put {head} comb region no tree {u {u {u {l head.r1} {l lt_ear.r}} {u {l rt_ear.r} {l eyes}}} {u {l mustache.r} {l beard.r}}}
|
||||
put {hat} comb region no tree {u {u {l hat.r1} {l hat.r2}} {l hat.r3}}
|
||||
put {rt_arm.gray.s} arb8 V1 {-76.20000000000001705302566 -177.7999999999999545252649 -12.69999999999999928945726} V2 {-76.20000000000001705302566 -279.3999999999999772626325 -12.69999999999999928945726} V3 {-76.20000000000001705302566 -279.3999999999999772626325 -114.2999999999999971578291} V4 {-76.20000000000001705302566 -177.7999999999999545252649 -114.2999999999999971578291} V5 {-165.1000000000000227373675 -177.7999999999999261035555 -12.69999999999999928945726} V6 {-165.1000000000000227373675 -279.3999999999999772626325 -12.69999999999999928945726} V7 {-165.1000000000000227373675 -279.3999999999999772626325 -114.2999999999999971578291} V8 {-165.1000000000000227373675 -177.7999999999999261035555 -114.2999999999999971578291}
|
||||
put {lt_arm.gray.s} arb8 V1 {-76.19999999999998863131623 177.7999999999999545252649 -12.69999999999999928945726} V2 {-76.19999999999998863131623 279.3999999999999772626325 -12.69999999999999928945726} V3 {-76.19999999999998863131623 279.3999999999999772626325 -114.2999999999999971578291} V4 {-76.19999999999998863131623 177.7999999999999545252649 -114.2999999999999971578291} V5 {-165.0999999999999943156581 177.7999999999999545252649 -12.69999999999999928945726} V6 {-165.0999999999999943156581 279.3999999999999772626325 -12.69999999999999928945726} V7 {-165.0999999999999943156581 279.3999999999999772626325 -114.2999999999999971578291} V8 {-165.0999999999999943156581 177.7999999999999545252649 -114.2999999999999971578291}
|
||||
put {body.white.s2} arb8 V1 {228.6000000000000227373675 -25.39999999999999857891453 38.09999999999999431565811} V2 {228.6000000000000227373675 25.39999999999999857891453 38.09999999999999431565811} V3 {228.6000000000000227373675 25.39999999999999857891453 444.5000000000000568434189} V4 {228.6000000000000227373675 -25.39999999999999857891453 444.5000000000000568434189} V5 {-228.6000000000000227373675 -25.39999999999999857891453 38.09999999999999431565811} V6 {-228.6000000000000227373675 25.39999999999999857891453 38.09999999999999431565811} V7 {-228.6000000000000227373675 25.39999999999999857891453 444.5000000000000568434189} V8 {-228.6000000000000227373675 -25.39999999999999857891453 444.5000000000000568434189}
|
||||
put {body.white.s1} arb8 V1 {228.5999999999999658939487 -228.5999999999999658939487 -12.69999999999999928945726} V2 {228.5999999999999658939487 228.5999999999999658939487 -12.69999999999999928945726} V3 {228.5999999999999658939487 228.5999999999999658939487 63.49999999999999289457264} V4 {228.5999999999999658939487 -228.5999999999999658939487 63.49999999999999289457264} V5 {-228.5999999999999658939487 -228.5999999999999658939487 -12.69999999999999928945726} V6 {-228.5999999999999658939487 228.5999999999999658939487 -12.69999999999999928945726} V7 {-228.5999999999999658939487 228.5999999999999658939487 63.49999999999999289457264} V8 {-228.5999999999999658939487 -228.5999999999999658939487 63.49999999999999289457264}
|
||||
@@ -1,205 +0,0 @@
|
||||
title {ARB8 Unit Test Showcase}
|
||||
units mm
|
||||
attr set {_GLOBAL}
|
||||
|
||||
put {SpanningUnitCube} arb8 V1 {-1 -1 -1} V2 {1 -1 -1} V3 {1 1 -1} V4 {-1 1 -1} V5 {-1 -1 1} V6 {1 -1 1} V7 {1 1 1} V8 {-1 1 1}
|
||||
put {SpanningUnitCube.r} comb region yes tree {l SpanningUnitCube}
|
||||
attr set {SpanningUnitCube.r} {region} {R} {region_id} {8400} {material_id} {1} {los} {100} {rgb} {250/245/180} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q1} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0 1 0} V5 {0 0 1} V6 {1 0 1} V7 {1 1 1} V8 {0 1 1}
|
||||
put {UnitCube_Q1.r} comb region yes tree {l UnitCube_Q1}
|
||||
attr set {UnitCube_Q1.r} {region} {R} {region_id} {8401} {material_id} {1} {los} {100} {rgb} {255/106/106} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q2} arb8 V1 {-1 0 0} V2 {0 0 0} V3 {0 1 0} V4 {-1 1 0} V5 {-1 0 1} V6 {0 0 1} V7 {0 1 1} V8 {-1 1 1}
|
||||
put {UnitCube_Q2.r} comb region yes tree {l UnitCube_Q2}
|
||||
attr set {UnitCube_Q2.r} {region} {R} {region_id} {8402} {material_id} {1} {los} {100} {rgb} {255/170/92} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q3} arb8 V1 {-1 -1 0} V2 {0 -1 0} V3 {0 0 0} V4 {-1 0 0} V5 {-1 -1 1} V6 {0 -1 1} V7 {0 0 1} V8 {-1 0 1}
|
||||
put {UnitCube_Q3.r} comb region yes tree {l UnitCube_Q3}
|
||||
attr set {UnitCube_Q3.r} {region} {R} {region_id} {8403} {material_id} {1} {los} {100} {rgb} {255/224/102} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q4} arb8 V1 {0 -1 0} V2 {1 -1 0} V3 {1 0 0} V4 {0 0 0} V5 {0 -1 1} V6 {1 -1 1} V7 {1 0 1} V8 {0 0 1}
|
||||
put {UnitCube_Q4.r} comb region yes tree {l UnitCube_Q4}
|
||||
attr set {UnitCube_Q4.r} {region} {R} {region_id} {8404} {material_id} {1} {los} {100} {rgb} {191/224/64} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q5} arb8 V1 {0 0 -1} V2 {1 0 -1} V3 {1 1 -1} V4 {0 1 -1} V5 {0 0 0} V6 {1 0 0} V7 {1 1 0} V8 {0 1 0}
|
||||
put {UnitCube_Q5.r} comb region yes tree {l UnitCube_Q5}
|
||||
attr set {UnitCube_Q5.r} {region} {R} {region_id} {8405} {material_id} {1} {los} {100} {rgb} {105/206/107} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q6} arb8 V1 {-1 0 -1} V2 {0 0 -1} V3 {0 1 -1} V4 {-1 1 -1} V5 {-1 0 0} V6 {0 0 0} V7 {0 1 0} V8 {-1 1 0}
|
||||
put {UnitCube_Q6.r} comb region yes tree {l UnitCube_Q6}
|
||||
attr set {UnitCube_Q6.r} {region} {R} {region_id} {8406} {material_id} {1} {los} {100} {rgb} {82/197/194} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q7} arb8 V1 {-1 -1 -1} V2 {0 -1 -1} V3 {0 0 -1} V4 {-1 0 -1} V5 {-1 -1 0} V6 {0 -1 0} V7 {0 0 0} V8 {-1 0 0}
|
||||
put {UnitCube_Q7.r} comb region yes tree {l UnitCube_Q7}
|
||||
attr set {UnitCube_Q7.r} {region} {R} {region_id} {8407} {material_id} {1} {los} {100} {rgb} {92/146/255} {oshader} {plastic}
|
||||
|
||||
put {UnitCube_Q8} arb8 V1 {0 -1 -1} V2 {1 -1 -1} V3 {1 0 -1} V4 {0 0 -1} V5 {0 -1 0} V6 {1 -1 0} V7 {1 0 0} V8 {0 0 0}
|
||||
put {UnitCube_Q8.r} comb region yes tree {l UnitCube_Q8}
|
||||
attr set {UnitCube_Q8.r} {region} {R} {region_id} {8408} {material_id} {1} {los} {100} {rgb} {165/122/255} {oshader} {plastic}
|
||||
|
||||
put {Elongated_X1} arb8 V1 {-1 0 0} V2 {1 0 0} V3 {1 1 0} V4 {-1 1 0} V5 {-1 0 1} V6 {1 0 1} V7 {1 1 1} V8 {-1 1 1}
|
||||
put {Elongated_X1.r} comb region yes tree {l Elongated_X1}
|
||||
attr set {Elongated_X1.r} {region} {R} {region_id} {8409} {material_id} {1} {los} {100} {rgb} {255/120/120} {oshader} {plastic}
|
||||
|
||||
put {Elongated_X2} arb8 V1 {-1 -1 0} V2 {1 -1 0} V3 {1 0 0} V4 {-1 0 0} V5 {-1 -1 1} V6 {1 -1 1} V7 {1 0 1} V8 {-1 0 1}
|
||||
put {Elongated_X2.r} comb region yes tree {l Elongated_X2}
|
||||
attr set {Elongated_X2.r} {region} {R} {region_id} {8410} {material_id} {1} {los} {100} {rgb} {214/72/72} {oshader} {plastic}
|
||||
|
||||
put {Elongated_Y1} arb8 V1 {0 -1 0} V2 {1 -1 0} V3 {1 1 0} V4 {0 1 0} V5 {0 -1 1} V6 {1 -1 1} V7 {1 1 1} V8 {0 1 1}
|
||||
put {Elongated_Y1.r} comb region yes tree {l Elongated_Y1}
|
||||
attr set {Elongated_Y1.r} {region} {R} {region_id} {8411} {material_id} {1} {los} {100} {rgb} {255/191/94} {oshader} {plastic}
|
||||
|
||||
put {Elongated_Y2} arb8 V1 {-1 -1 0} V2 {0 -1 0} V3 {0 1 0} V4 {-1 1 0} V5 {-1 -1 1} V6 {0 -1 1} V7 {0 1 1} V8 {-1 1 1}
|
||||
put {Elongated_Y2.r} comb region yes tree {l Elongated_Y2}
|
||||
attr set {Elongated_Y2.r} {region} {R} {region_id} {8412} {material_id} {1} {los} {100} {rgb} {214/150/60} {oshader} {plastic}
|
||||
|
||||
put {Elongated_Z1} arb8 V1 {0 0 -1} V2 {1 0 -1} V3 {1 1 -1} V4 {0 1 -1} V5 {0 0 1} V6 {1 0 1} V7 {1 1 1} V8 {0 1 1}
|
||||
put {Elongated_Z1.r} comb region yes tree {l Elongated_Z1}
|
||||
attr set {Elongated_Z1.r} {region} {R} {region_id} {8413} {material_id} {1} {los} {100} {rgb} {114/210/255} {oshader} {plastic}
|
||||
|
||||
put {Elongated_Z2} arb8 V1 {-1 0 -1} V2 {0 0 -1} V3 {0 1 -1} V4 {-1 1 -1} V5 {-1 0 1} V6 {0 0 1} V7 {0 1 1} V8 {-1 1 1}
|
||||
put {Elongated_Z2.r} comb region yes tree {l Elongated_Z2}
|
||||
attr set {Elongated_Z2.r} {region} {R} {region_id} {8414} {material_id} {1} {los} {100} {rgb} {63/152/214} {oshader} {plastic}
|
||||
|
||||
put {ReverseUnitCube} arb8 V1 {0 0 0} V2 {0 1 0} V3 {1 1 0} V4 {1 0 0} V5 {0 0 1} V6 {0 1 1} V7 {1 1 1} V8 {1 0 1}
|
||||
put {ReverseUnitCube.r} comb region yes tree {l ReverseUnitCube}
|
||||
attr set {ReverseUnitCube.r} {region} {R} {region_id} {8415} {material_id} {1} {los} {100} {rgb} {230/230/230} {oshader} {plastic}
|
||||
|
||||
put {TopSlanted} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0 1 0} V5 {0.2 0.2 1} V6 {1.2 0.2 1} V7 {1.2 1.2 1} V8 {0.2 1.2 1}
|
||||
put {TopSlanted.r} comb region yes tree {l TopSlanted}
|
||||
attr set {TopSlanted.r} {region} {R} {region_id} {8416} {material_id} {1} {los} {100} {rgb} {255/164/132} {oshader} {plastic}
|
||||
|
||||
put {UnevenSlanted} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0 1 0} V5 {0.1 0.3 1} V6 {1.1 0.3 1} V7 {1.3 1.3 1} V8 {0.1 1.3 1}
|
||||
put {UnevenSlanted.r} comb region yes tree {l UnevenSlanted}
|
||||
attr set {UnevenSlanted.r} {region} {R} {region_id} {8417} {material_id} {1} {los} {100} {rgb} {255/132/178} {oshader} {plastic}
|
||||
|
||||
put {OppositeSlanted} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0 1 0} V5 {-0.2 0.2 1} V6 {0.8 0.2 1} V7 {0.8 1.2 1} V8 {-0.2 1.2 1}
|
||||
put {OppositeSlanted.r} comb region yes tree {l OppositeSlanted}
|
||||
attr set {OppositeSlanted.r} {region} {R} {region_id} {8418} {material_id} {1} {los} {100} {rgb} {210/132/255} {oshader} {plastic}
|
||||
|
||||
put {PlanarARB6} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0.5 0.5 0} V5 {0 0 1} V6 {1 0 1} V7 {1 1 1} V8 {0.5 0.5 1}
|
||||
put {PlanarARB6.r} comb region yes tree {l PlanarARB6}
|
||||
attr set {PlanarARB6.r} {region} {R} {region_id} {8419} {material_id} {1} {los} {100} {rgb} {165/152/255} {oshader} {plastic}
|
||||
|
||||
put {ConcavePlanar} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0.6 0.4 0} V5 {0 0 1} V6 {1 0 1} V7 {1 1 1} V8 {0.6 0.4 1}
|
||||
put {ConcavePlanar.r} comb region yes tree {l ConcavePlanar}
|
||||
attr set {ConcavePlanar.r} {region} {R} {region_id} {8420} {material_id} {1} {los} {100} {rgb} {124/219/168} {oshader} {plastic}
|
||||
|
||||
put {MoreConcavePlanar} arb8 V1 {0 0 0} V2 {1 0 0} V3 {0.3 0.3 0} V4 {0 1 0} V5 {0 0 1} V6 {1 0 1} V7 {0.3 0.3 1} V8 {0 1 1}
|
||||
put {MoreConcavePlanar.r} comb region yes tree {l MoreConcavePlanar}
|
||||
attr set {MoreConcavePlanar.r} {region} {R} {region_id} {8421} {material_id} {1} {los} {100} {rgb} {61/184/132} {oshader} {plastic}
|
||||
|
||||
put {TwistedCubeNonPlanar} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0 1 0} V5 {-0.183 0.317 1} V6 {0.683 -0.183 1} V7 {1.183 0.683 1} V8 {0.317 1.183 1}
|
||||
put {TwistedCubeNonPlanar.r} comb region yes tree {l TwistedCubeNonPlanar}
|
||||
attr set {TwistedCubeNonPlanar.r} {region} {R} {region_id} {8422} {material_id} {1} {los} {100} {rgb} {120/233/255} {oshader} {plastic}
|
||||
|
||||
put {LongConvexPlanar} arb8 V1 {4281 -119 1531} V2 {4281 78 1531} V3 {3322 78 1475} V4 {3322 -119 1475} V5 {4275 -119 1629} V6 {4275 78 1649} V7 {3315 78 1593} V8 {3315 -119 1573}
|
||||
put {LongConvexPlanar.r} comb region yes tree {l LongConvexPlanar}
|
||||
attr set {LongConvexPlanar.r} {region} {R} {region_id} {8423} {material_id} {1} {los} {100} {rgb} {255/216/128} {oshader} {plastic}
|
||||
|
||||
put {TaperedConvexPlanar} arb8 V1 {122.749 2.4 40.725} V2 {122.749 -7.4 40.725} V3 {122.611 -5 43.244} V4 {122.611 0 43.244} V5 {105.434 2.4 39.708} V6 {105.434 -7.4 39.708} V7 {105.295 -5 42.228} V8 {105.295 0 42.228}
|
||||
put {TaperedConvexPlanar.r} comb region yes tree {l TaperedConvexPlanar}
|
||||
attr set {TaperedConvexPlanar.r} {region} {R} {region_id} {8424} {material_id} {1} {los} {100} {rgb} {255/172/104} {oshader} {plastic}
|
||||
|
||||
put {BigConcavePlanar} arb8 V1 {500 -500 -500} V2 {500 500 -500} V3 {500 -169.922 -304.688} V4 {500 -500 500} V5 {400 -500 -500} V6 {400 500 -500} V7 {400 -169.922 -304.688} V8 {400 -500 500}
|
||||
put {BigConcavePlanar.r} comb region yes tree {l BigConcavePlanar}
|
||||
attr set {BigConcavePlanar.r} {region} {R} {region_id} {8425} {material_id} {1} {los} {100} {rgb} {255/115/87} {oshader} {plastic}
|
||||
|
||||
put {WarpedNonPlanar} arb8 V1 {0 0 0} V2 {1 0 0.1} V3 {1.1 1 0} V4 {0 1.1 -0.1} V5 {0.1 0 1} V6 {1 0.1 1.1} V7 {1.1 1.1 0.9} V8 {0 1 1}
|
||||
put {WarpedNonPlanar.r} comb region yes tree {l WarpedNonPlanar}
|
||||
attr set {WarpedNonPlanar.r} {region} {R} {region_id} {8426} {material_id} {1} {los} {100} {rgb} {255/99/156} {oshader} {plastic}
|
||||
|
||||
put {TwistedTopNonPlanar} arb8 V1 {0 0 0} V2 {1 0 -0.1} V3 {1.1 1.1 0} V4 {0 1.2 0.1} V5 {0.2 0 0.9} V6 {1 0.1 1.2} V7 {1.2 1.2 0.8} V8 {0 1 1}
|
||||
put {TwistedTopNonPlanar.r} comb region yes tree {l TwistedTopNonPlanar}
|
||||
attr set {TwistedTopNonPlanar.r} {region} {R} {region_id} {8427} {material_id} {1} {los} {100} {rgb} {216/118/255} {oshader} {plastic}
|
||||
|
||||
put {ComplexNonPlanar} arb8 V1 {0 0 0} V2 {0.8 0 0.1} V3 {1.1 0.9 0.2} V4 {0.1 1.1 -0.2} V5 {0.2 -0.2 0.8} V6 {1 0 1.1} V7 {1.1 0.9 0.9} V8 {0 1 0.9}
|
||||
put {ComplexNonPlanar.r} comb region yes tree {l ComplexNonPlanar}
|
||||
attr set {ComplexNonPlanar.r} {region} {R} {region_id} {8428} {material_id} {1} {los} {100} {rgb} {139/132/255} {oshader} {plastic}
|
||||
|
||||
put {ConcaveNonPlanar} arb8 V1 {0 0 0} V2 {1 0 0} V3 {1 1 0} V4 {0 1 0} V5 {0 0 1} V6 {0.4 0.4 1} V7 {1 1 1} V8 {0 1 1}
|
||||
put {ConcaveNonPlanar.r} comb region yes tree {l ConcaveNonPlanar}
|
||||
attr set {ConcaveNonPlanar.r} {region} {R} {region_id} {8429} {material_id} {1} {los} {100} {rgb} {110/207/255} {oshader} {plastic}
|
||||
|
||||
put {MoreConcaveNonPlanar} arb8 V1 {0 0 0} V2 {1 0 -0.05} V3 {1 1 0.03} V4 {0.7 0.3 0.32} V5 {0 0 1} V6 {1 0 1.1} V7 {1 1 0.92} V8 {0.7 0.3 0.7}
|
||||
put {MoreConcaveNonPlanar.r} comb region yes tree {l MoreConcaveNonPlanar}
|
||||
attr set {MoreConcaveNonPlanar.r} {region} {R} {region_id} {8430} {material_id} {1} {los} {100} {rgb} {89/188/197} {oshader} {plastic}
|
||||
|
||||
put {MostConcaveNonPlanar} arb8 V1 {0.2 0 0} V2 {1 0.3 0.1} V3 {1.1 1 -0.25} V4 {0.4 0.6 0} V5 {0 0.2 1} V6 {0.9 0 1.25} V7 {1 0.8 0.6} V8 {0.4 0.3 0.8}
|
||||
put {MostConcaveNonPlanar.r} comb region yes tree {l MostConcaveNonPlanar}
|
||||
attr set {MostConcaveNonPlanar.r} {region} {R} {region_id} {8431} {material_id} {1} {los} {100} {rgb} {71/226/179} {oshader} {plastic}
|
||||
|
||||
put {LargeSaddlePlanar} arb8 V1 {1000 -1000 -1000} V2 {1000 1000 -900} V3 {1000 1000 1100} V4 {1000 -1000 1000} V5 {-1000 -1000 -900} V6 {-1000 1000 -1000} V7 {-1000 1000 1000} V8 {-1000 -1000 1100}
|
||||
put {LargeSaddlePlanar.r} comb region yes tree {l LargeSaddlePlanar}
|
||||
attr set {LargeSaddlePlanar.r} {region} {R} {region_id} {8432} {material_id} {1} {los} {100} {rgb} {198/242/117} {oshader} {plastic}
|
||||
|
||||
put {groundplane} arb8 V1 {-1100 -800 -190} V2 {1100 -800 -190} V3 {1100 800 -190} V4 {-1100 800 -190} V5 {-1100 -800 -170} V6 {1100 -800 -170} V7 {1100 800 -170} V8 {-1100 800 -170}
|
||||
put {groundplane.r} comb region yes tree {l groundplane}
|
||||
attr set {groundplane.r} {region} {R} {region_id} {8433} {material_id} {1} {los} {100} {rgb} {240/240/240} {oshader} {stack {{checker {b {190 190 190} s 20}} {plastic {di .85 sp .15}}}}
|
||||
|
||||
put {lightpanel} arb8 V1 {-260 -160 1640} V2 {260 -160 1640} V3 {260 160 1640} V4 {-260 160 1640} V5 {-260 -160 1660} V6 {260 -160 1660} V7 {260 160 1660} V8 {-260 160 1660}
|
||||
put {light.r} comb region yes tree {l lightpanel}
|
||||
attr set {light.r} {region} {R} {region_id} {8434} {material_id} {1} {los} {100} {rgb} {255/255/245} {oshader} {light {s 32 v 0}} {shader} {light {s 32 v 0}}
|
||||
|
||||
put {SpanningUnitCube.place} comb region no tree {l SpanningUnitCube.r {49.4183462128 -6.50277282681 33.3997156149 -520 16.0569940398 56.3810489085 -12.7808554638 340 -30 19.4651295794 48.177886322 20 0 0 0 1}}
|
||||
put {UnitCube_Q1.place} comb region no tree {l UnitCube_Q1.r {95.3783673293 -58.1118549187 43.8859814008 -372.171276719 66.7846517861 98.6327164348 -14.5395163089 396.483654405 -29.030627472 35.9805442786 110.736728785 16.1566772042 0 0 0 1}}
|
||||
put {UnitCube_Q2.place} comb region no tree {l UnitCube_Q2.r {-95.3783673293 -58.1118549187 43.8859814008 -748.981217092 66.7846517861 -98.6327164348 14.5395163089 547.361506317 29.030627472 35.9805442786 110.736728785 16.1566772042 0 0 0 1}}
|
||||
put {UnitCube_Q3.place} comb region no tree {l UnitCube_Q3.r {-95.3783673293 72.8090108537 1.34721346343 -720.363255156 -66.7846517861 -88.341657059 46.2121403301 107.408195052 29.030627472 35.9805442786 110.736728785 52.1372214828 0 0 0 1}}
|
||||
put {UnitCube_Q4.place} comb region no tree {l UnitCube_Q4.r {95.3783673293 72.8090108537 1.34721346343 -343.553314783 -66.7846517861 88.341657059 -46.2121403301 308.746644227 -29.030627472 35.9805442786 110.736728785 52.1372214828 0 0 0 1}}
|
||||
put {UnitCube_Q5.place} comb region no tree {l UnitCube_Q5.r {39.8232820043 -110.312342921 -25.402622104 -418.792147629 109.413568075 30.603715996 38.6274991197 505.434410305 -29.030627472 -35.9805442786 110.736728785 52.8739502678 0 0 0 1}}
|
||||
put {UnitCube_Q6.place} comb region no tree {l UnitCube_Q6.r {-39.8232820043 -110.312342921 -25.402622104 -576.121413559 109.413568075 -30.603715996 -38.6274991197 606.824195257 29.030627472 -35.9805442786 110.736728785 52.8739502678 0 0 0 1}}
|
||||
put {UnitCube_Q7.place} comb region no tree {l UnitCube_Q7.r {-39.8232820043 104.175846754 44.2888153308 -544.343942924 -109.413568075 -47.4636006473 13.2618903102 52.063058013 29.030627472 -35.9805442786 110.736728785 16.8934059891 0 0 0 1}}
|
||||
put {UnitCube_Q8.place} comb region no tree {l UnitCube_Q8.r {39.8232820043 104.175846754 44.2888153308 -387.014676995 -109.413568075 47.4636006473 -13.2618903102 195.678336425 -29.030627472 -35.9805442786 110.736728785 16.8934059891 0 0 0 1}}
|
||||
|
||||
put {Elongated_X1.place} comb region no tree {l Elongated_X1.r {52.9768555715 8.7044814766 26.7896393402 702.252939592 0 57.0633909777 -18.5410196625 320.738814342 -28.1682937672 16.3707486802 50.3839837041 6.62263380786 0 0 0 1}}
|
||||
put {Elongated_X2.place} comb region no tree {l Elongated_X2.r {-53.927642778 8.12784805209 -25.0149441426 336.571396097 0 -57.0633909777 -18.5410196625 320.738814342 -26.3022688073 -16.664558085 51.2882360724 -53.9763970787 0 0 0 1}}
|
||||
put {Elongated_Y1.place} comb region no tree {l Elongated_Y1.r {24.8029823249 -45.5382654557 30.1840760513 592.506470812 53.190167245 27.696794106 -1.92190132524 487.570947797 -12.4747014491 27.5527489651 51.8191841717 -29.6722413613 0 0 0 1}}
|
||||
put {Elongated_Y2.place} comb region no tree {l Elongated_Y2.r {-24.8029823249 50.4884080186 -20.8742119261 418.035614801 -53.190167245 -17.0811791223 21.8869693709 129.256350935 12.4747014491 27.5527489651 51.8191841717 10.3277586387 0 0 0 1}}
|
||||
put {Elongated_Z1.place} comb region no tree {l Elongated_Z1.r {-28.1907786236 -48.449629644 21.3989109057 458.320204134 48.827860881 -14.3810251633 31.7651714468 495.981662898 -20.5212085995 32.3391326817 46.1850678792 29.0910379589 0 0 0 1}}
|
||||
put {Elongated_Z2.place} comb region no tree {l Elongated_Z2.r {28.5316954889 37.2470428028 37.3978629734 615.642326343 -49.4183462128 33.7844747485 4.0541735977 125.193508762 -18.5410196625 -32.7302164431 46.7435933735 -7.9054016097 0 0 0 1}}
|
||||
|
||||
put {ReverseUnitCube.place} comb region no tree {l ReverseUnitCube.r {103.433991196 -60.555851917 5.86500332073 -784.3715713 48.2320622081 88.6693278124 64.8954426786 -345.89841635 -37.082039325 -53.5792786803 100.767967408 14.9466752985 0 0 0 1}}
|
||||
put {TopSlanted.place} comb region no tree {l TopSlanted.r {96.3287340793 15.3039561576 -22.0581938655 -655.950517209 -20.4753045059 95.0207291039 -23.4909119866 -277.981798765 17.3648177667 27.1449805028 94.6657970834 -64.0387775034 0 0 0 1}}
|
||||
put {UnevenSlanted.place} comb region no tree {l UnevenSlanted.r {88.2050542109 -14.8789457562 22.785860616 -499.054900804 21.9919900071 84.4965683945 -29.9565078782 -299.239309022 -16.0290625539 34.053736387 84.2859552411 -35.8590156121 0 0 0 1}}
|
||||
put {OppositeSlanted.place} comb region no tree {l OppositeSlanted.r {82.3639103546 42.0405555876 -38.0628159361 -319.138489526 -47.5528258148 87.7679736664 -5.95915728267 -275.660075233 30.9016994375 23.0081395245 92.2806073208 -60.3058671501 0 0 0 1}}
|
||||
put {PlanarARB6.place} comb region no tree {l PlanarARB6.r {115.594480895 8.17480470115 31.1622937968 -837.465789697 20.3824258028 71.3324119214 -94.3199010171 -433.697468354 -24.9494028981 96.1501928109 67.3250898065 -79.2629398596 0 0 0 1}}
|
||||
put {ConcavePlanar.place} comb region no tree {l ConcavePlanar.r {107.244094838 -4.19493374266 53.6759411037 -678.362551099 -34.8457187174 85.7908832775 76.3262748569 -498.635719709 -41.0424171991 -83.7993250412 75.4532511765 6.69424553188 0 0 0 1}}
|
||||
put {MoreConcavePlanar.place} comb region no tree {l MoreConcavePlanar.r {98.2385703033 -68.8300310449 3.40736424785 -456.407951753 52.2343743832 70.4997088106 -81.8618420903 -455.436120552 44.9527912099 68.4997655761 87.6757017563 -114.564129271 0 0 0 1}}
|
||||
put {TwistedCubeNonPlanar.place} comb region no tree {l TwistedCubeNonPlanar.r {58.6764988003 -36.5971430924 54.1750992397 -318.127227474 52.8325568251 69.4213241451 -10.3259123031 -490.963984334 -38.5099104061 39.4785086222 68.3787827407 -18.6736904784 0 0 0 1}}
|
||||
|
||||
put {WarpedNonPlanar.place} comb region no tree {l WarpedNonPlanar.r {85.9669900169 48.3491658661 16.4934771193 257.879375705 -34.7329185229 78.9947205011 -50.5317573791 -244.078112398 -37.4606593416 37.7119648521 84.7024598739 -20.4894479677 0 0 0 1}}
|
||||
put {TwistedTopNonPlanar.place} comb region no tree {l TwistedTopNonPlanar.r {83.4930920481 -37.5301552898 11.8785977012 485.889009209 27.1285501058 75.0409121486 46.407039684 -331.825549179 -28.5246456346 -38.4845294501 78.9049785729 30.8077668357 0 0 0 1}}
|
||||
put {ComplexNonPlanar.place} comb region no tree {l ComplexNonPlanar.r {68.2221969569 -62.1661301805 -1.34690754179 691.058658649 49.5663274432 55.5767314233 -54.5446254664 -272.725927774 37.5449208993 39.589256647 74.4565627193 -51.9703252094 0 0 0 1}}
|
||||
put {ConcaveNonPlanar.place} comb region no tree {l ConcaveNonPlanar.r {99.563920506 36.7265877365 56.0194920247 243.844999866 -52.9390755862 104.63063394 25.4928365894 -473.592197472 -41.0424171991 -45.8648906522 103.014231036 -8.05346159232 0 0 0 1}}
|
||||
put {MoreConcaveNonPlanar.place} comb region no tree {l MoreConcaveNonPlanar.r {91.7377293852 -5.0835848262 49.4652906758 450.703650116 19.4994563335 99.1649372544 -25.9722011215 -480.696791205 -45.7430761867 32.0771132385 88.131144304 -21.4358692855 0 0 0 1}}
|
||||
put {MostConcaveNonPlanar.place} comb region no tree {l MostConcaveNonPlanar.r {58.9095344445 52.9796505277 11.0825710686 635.568645257 -49.4309686252 45.9860647701 42.9169102771 -452.26445478 22.0509884654 -38.4504678375 66.5981638694 5.79810832812 0 0 0 1}}
|
||||
|
||||
put {LongConvexPlanar.place} comb region no tree {l LongConvexPlanar.r {0.115561944047 0.0319553637337 0.0324930028006 -639.003248908 -0.0245634494865 0.1182771118 -0.0289597166373 280.951739329 -0.0383872042702 0.0205154324115 0.116348798857 4.47834436767 0 0 0 1}}
|
||||
put {TaperedConvexPlanar.place} comb region no tree {l TaperedConvexPlanar.r {5.7378157661 -3.26643327706 1.91741052485 -591.929831404 2.55464017008 5.90709171549 2.41840036102 -236.823025558 -2.7964018087 -1.30585617557 6.14357028226 90.775965566 0 0 0 1}}
|
||||
put {BigConcavePlanar.place} comb region no tree {l BigConcavePlanar.r {0.0998972458041 0.0482115762187 -0.0457841042204 -194.953760612 -0.0576757017563 0.103947290059 -0.0163851858765 -114.04593421 0.033076482698 0.0356455440104 0.109705703974 -4.88441721412 0 0 0 1}}
|
||||
put {LargeSaddlePlanar.place} comb region no tree {l LargeSaddlePlanar.r {0.0470204253358 -0.0323394992732 0.0029227573361 149.853862133 0.0293816227061 0.0445634112955 0.0203992338904 -141.019961695 -0.01382410832 -0.0152828427629 0.0532976065944 41.3351196703 0 0 0 1}}
|
||||
|
||||
put {arb8_quadrants.c} comb region no tree {u {u {u {u {u {u {u {u {l SpanningUnitCube.place} {l UnitCube_Q1.place}} {l UnitCube_Q2.place}} {l UnitCube_Q3.place}} {l UnitCube_Q4.place}} {l UnitCube_Q5.place}} {l UnitCube_Q6.place}} {l UnitCube_Q7.place}} {l UnitCube_Q8.place}}
|
||||
attr set {arb8_quadrants.c} {inherit} {1}
|
||||
|
||||
put {arb8_axes.c} comb region no tree {u {u {u {u {u {l Elongated_X1.place} {l Elongated_X2.place}} {l Elongated_Y1.place}} {l Elongated_Y2.place}} {l Elongated_Z1.place}} {l Elongated_Z2.place}}
|
||||
attr set {arb8_axes.c} {inherit} {1}
|
||||
|
||||
put {arb8_planar.c} comb region no tree {u {u {u {u {u {u {u {l ReverseUnitCube.place} {l TopSlanted.place}} {l UnevenSlanted.place}} {l OppositeSlanted.place}} {l PlanarARB6.place}} {l ConcavePlanar.place}} {l MoreConcavePlanar.place}} {l TwistedCubeNonPlanar.place}}
|
||||
attr set {arb8_planar.c} {inherit} {1}
|
||||
|
||||
put {arb8_nonplanar.c} comb region no tree {u {u {u {u {u {l WarpedNonPlanar.place} {l TwistedTopNonPlanar.place}} {l ComplexNonPlanar.place}} {l ConcaveNonPlanar.place}} {l MoreConcaveNonPlanar.place}} {l MostConcaveNonPlanar.place}}
|
||||
attr set {arb8_nonplanar.c} {inherit} {1}
|
||||
|
||||
put {arb8_large_planars.c} comb region no tree {u {u {u {l LongConvexPlanar.place} {l TaperedConvexPlanar.place}} {l BigConcavePlanar.place}} {l LargeSaddlePlanar.place}}
|
||||
attr set {arb8_large_planars.c} {inherit} {1}
|
||||
|
||||
put {arb8_small_gallery.c} comb region no tree {u {u {u {l arb8_quadrants.c} {l arb8_axes.c}} {l arb8_planar.c}} {l arb8_nonplanar.c}}
|
||||
attr set {arb8_small_gallery.c} {inherit} {1}
|
||||
|
||||
put {arb8_large_gallery.c} comb region no tree {l arb8_large_planars.c}
|
||||
attr set {arb8_large_gallery.c} {inherit} {1}
|
||||
|
||||
put {arb8_showcase} comb region no tree {u {u {u {l arb8_small_gallery.c} {l arb8_large_gallery.c}} {l groundplane.r}} {l light.r}}
|
||||
attr set {arb8_showcase} {inherit} {1}
|
||||
@@ -1,350 +0,0 @@
|
||||
title {Small bicycle wheel by lbutler}
|
||||
units in
|
||||
put {rcastooth.s28_1_1_29} comb region no tree {l rcastooth.s {1 0 0 53.4214 0 1 0 -37.1824 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s18_1_1_19} comb region no tree {l rcastooth.s {1 0 0 34.6765 0 1 0 -25.1939 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s27_1_1_28} comb region no tree {l rcastooth.s {1 0 0 44.8431 0 1 0 -47.175 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s17_1_1_18} comb region no tree {l rcastooth.s {1 0 0 25.1939 0 1 0 -34.6765 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s26_1_1_27} comb region no tree {l rcastooth.s {1 0 0 55.6095 0 1 0 -13.1797 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s16_1_1_17} comb region no tree {l rcastooth.s {1 0 0 34.0469 0 1 0 -13.1898 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s25_1_1_26} comb region no tree {l rcastooth.s {1 0 0 51.0711 0 1 0 -25.6489 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s15_1_1_16} comb region no tree {l rcastooth.s {1 0 0 26.9831 0 1 0 -24.5983 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s24_1_1_25} comb region no tree {l rcastooth.s {1 0 0 43.7794 0 1 0 -36.7353 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s29_1_1_30} comb region no tree {l rcastooth.s {1 0 0 59.8127 0 1 0 -25.6676 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_18} comb region no tree {l rhspkh2 {1 0 0 1.18e-05 0 1 0 -7.67456 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s14_1_1_15} comb region no tree {l rcastooth.s {1 0 0 29.8752 0 1 0 -13.3013 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s23_1_1_24} comb region no tree {l rcastooth.s {1 0 0 34.1276 0 1 0 -45.8413 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_17} comb region no tree {l rhspkh2 {1 0 0 -2.62489 0 1 0 -14.8863 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s19_1_1_20} comb region no tree {l rcastooth.s {1 0 0 40.7647 0 1 0 -13.2452 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_16} comb region no tree {l rhspkh2 {1 0 0 -7.55799 0 1 0 -20.7653 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_15} comb region no tree {l rhspkh2 {1 0 0 -14.2043 0 1 0 -24.6026 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s13_1_1_14} comb region no tree {l rcastooth.s {1 0 0 21.8822 0 1 0 -24.3027 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s22_1_1_23} comb region no tree {l rcastooth.s {1 0 0 47.3876 0 1 0 -13.2774 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_14} comb region no tree {l rhspkh2 {1 0 0 -21.7623 0 1 0 -25.9353 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_13} comb region no tree {l rhspkh2 {1 0 0 -29.3202 0 1 0 -24.6026 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_1_13} comb region no tree {l rcastooth.s {1 0 0 25.5268 0 1 0 -13.3975 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s21_1_1_22} comb region no tree {l rcastooth.s {1 0 0 42.0481 0 1 0 -25.57 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s30_1_1_31} comb region no tree {l rcastooth.s {1 0 0 63.7552 0 1 0 -13.102 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_12} comb region no tree {l rhspkh2 {1 0 0 -35.9666 0 1 0 -20.7654 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_11} comb region no tree {l rhspkh2 {1 0 0 -40.8997 0 1 0 -14.8863 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s11_1_1_12} comb region no tree {l rcastooth.s {1 0 0 16.3767 0 1 0 -23.7258 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s20_1_1_21} comb region no tree {l rcastooth.s {1 0 0 33.5901 0 1 0 -35.9663 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_10} comb region no tree {l rhspkh2 {1 0 0 -43.5246 0 1 0 -7.67456 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_1_11} comb region no tree {l rcastooth.s {1 0 0 20.8336 0 1 0 -13.389 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_9} comb region no tree {l rhspkh2 {1 0 0 -43.5246 0 1 0 4e-07 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_8} comb region no tree {l rhspkh2 {1 0 0 -40.8997 0 1 0 7.21172 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_7} comb region no tree {l rhspkh2 {1 0 0 -35.9666 0 1 0 13.0907 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_6} comb region no tree {l rhspkh2 {1 0 0 -29.3202 0 1 0 16.928 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_5} comb region no tree {l rhspkh2 {1 0 0 -21.7623 0 1 0 18.2607 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_4} comb region no tree {l rhspkh2 {1 0 0 -14.2043 0 1 0 16.928 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_3} comb region no tree {l rhspkh2 {1 0 0 -7.55799 0 1 0 13.0908 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_2} comb region no tree {l rhspkh2 {1 0 0 -2.62489 0 1 0 7.21172 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh2_1_1_1} comb region no tree {l rhspkh2 {1 0 0 1.18e-05 0 1 0 4e-07 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_18} comb region no tree {l rhspkh {1 0 0 -1.3327 0 1 0 -7.55796 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_17} comb region no tree {l rhspkh {1 0 0 -5.1699 0 1 0 -14.2043 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_16} comb region no tree {l rhspkh {1 0 0 -11.049 0 1 0 -19.1374 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_15} comb region no tree {l rhspkh {1 0 0 -18.2607 0 1 0 -21.7623 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_14} comb region no tree {l rhspkh {1 0 0 -25.9353 0 1 0 -21.7623 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_13} comb region no tree {l rhspkh {1 0 0 -33.147 0 1 0 -19.1374 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_12} comb region no tree {l rhspkh {1 0 0 -39.0261 0 1 0 -14.2043 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_11} comb region no tree {l rhspkh {1 0 0 -42.8633 0 1 0 -7.55796 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_10} comb region no tree {l rhspkh {1 0 0 -44.196 0 1 0 -4.57038e-12 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1_1_10} comb region no tree {l rcastooth.s {1 0 0 18.4941 0 1 0 -13.4368 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s} tgc V {0 0 -0.3755760995733843365940174} H {0 0 2.57364612783325474865137} A {0 -4.762499999999999289457264 0} B {4.762499999999999289457264 0 0} C {0 -4.762499999999999289457264 0} D {4.762499999999999289457264 0 0}
|
||||
put {rcassette.r} comb region yes tree {u {u {u {u {l rcas11t.c1} {l rcas12t.c1}} {u {l rcas14t.c1} {l rcas16t.c1}}} {u {u {l rcas18t.c1} {l rcas21t.c1}} {u {l rcas24t.c1} {l rcas28t.c1}}}} {u {l rcas32t.c1} {l rcas.s2}}}
|
||||
attr set {rcassette.r} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
|
||||
put {rhspkh_1_1_9} comb region no tree {l rhspkh {1 0 0 -42.8633 0 1 0 7.55796 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_8} comb region no tree {l rhspkh {1 0 0 -39.0261 0 1 0 14.2043 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_7} comb region no tree {l rhspkh {1 0 0 -33.147 0 1 0 19.1374 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_6} comb region no tree {l rhspkh {1 0 0 -25.9353 0 1 0 21.7623 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_5} comb region no tree {l rhspkh {1 0 0 -18.2607 0 1 0 21.7623 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_4} comb region no tree {l rhspkh {1 0 0 -11.049 0 1 0 19.1374 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_3} comb region no tree {l rhspkh {1 0 0 -5.1699 0 1 0 14.2043 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_2} comb region no tree {l rhspkh {1 0 0 -1.3327 0 1 0 7.55796 0 0 1 0 0 0 0 1}}
|
||||
put {rhspkh_1_1_1} comb region no tree {l rhspkh}
|
||||
put {rcastooth.s8_1_1_9} comb region no tree {l rcastooth.s {1 0 0 7.06413 0 1 0 -21.7412 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1_1_8} comb region no tree {l rcastooth.s {1 0 0 -7.06413 0 1 0 -21.7412 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1_1_7} comb region no tree {l rcastooth.s {1 0 0 -18.4941 0 1 0 -13.4368 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1_1_6} comb region no tree {l rcastooth.s {1 0 0 -22.86 0 1 0 -4.72798e-12 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1_1_5} comb region no tree {l rcastooth.s {1 0 0 -18.4941 0 1 0 13.4368 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1_1_4} comb region no tree {l rcastooth.s {1 0 0 -7.06413 0 1 0 21.7412 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1_1_3} comb region no tree {l rcastooth.s {1 0 0 7.06413 0 1 0 21.7412 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1_1_2} comb region no tree {l rcastooth.s {1 0 0 18.4941 0 1 0 13.4368 0 0 1 0 0 0 0 1}}
|
||||
put {rcas28t.s1-1} comb region no tree {u {u {u {u {u {l rcastooth.s_1_1_8} {l rcastooth.s1_1__7}} {u {l rcastooth.s2_1__7} {l rcastooth.s3_1__7}}} {u {u {l rcastooth.s4_1__7} {l rcastooth.s5_1__7}} {u {l rcastooth.s6_1__7} {l rcastooth.s7_1__7}}}} {u {u {u {l rcastooth.s8_1__7} {l rcastooth.s9_1__7}} {u {l rcastooth.s10_1_6} {l rcastooth.s11_1_5}}} {u {u {l rcastooth.s12_1_5} {l rcastooth.s13_1_4}} {u {l rcastooth.s14_1_4} {l rcastooth.s15_1_3}}}}} {u {u {u {u {l rcastooth.s16_1_3} {l rcastooth.s17_1_2}} {u {l rcastooth.s18_1_2} {l rcastooth.s19_1_2}}} {u {u {l rcastooth.s20_1_1} {l rcastooth.s21_1_1}} {u {l rcastooth.s22_1_1} {l rcastooth.s23_1_1_24}}}} {u {u {l rcastooth.s24_1_1_25} {l rcastooth.s25_1_1_26}} {l rcastooth.s26_1_1_27}}}}
|
||||
put {rcas18t.s1-1} comb region no tree {u {u {u {u {u {l rcastooth.s_1_1_5} {l rcastooth.s1_1__4}} {u {l rcastooth.s2_1__4} {l rcastooth.s3_1__4}}} {u {u {l rcastooth.s4_1__4} {l rcastooth.s5_1__4}} {u {l rcastooth.s6_1__4} {l rcastooth.s7_1__4}}}} {u {u {u {l rcastooth.s8_1__4} {l rcastooth.s9_1__4}} {u {l rcastooth.s10_1_3} {l rcastooth.s11_1_2}}} {u {u {l rcastooth.s12_1_2} {l rcastooth.s13_1_1}} {u {l rcastooth.s14_1_1} {l rcastooth.s15_1_1_16}}}}} {l rcastooth.s16_1_1_17}}
|
||||
put {rcas16t.s1-1} comb region no tree {u {u {u {u {l rcastooth.s_1_1_4} {l rcastooth.s1_1__3}} {u {l rcastooth.s2_1__3} {l rcastooth.s3_1__3}}} {u {u {l rcastooth.s4_1__3} {l rcastooth.s5_1__3}} {u {l rcastooth.s6_1__3} {l rcastooth.s7_1__3}}}} {u {u {u {l rcastooth.s8_1__3} {l rcastooth.s9_1__3}} {u {l rcastooth.s10_1_2} {l rcastooth.s11_1_1}}} {u {u {l rcastooth.s12_1_1} {l rcastooth.s13_1_1_14}} {l rcastooth.s14_1_1_15}}}}
|
||||
put {rcas24t.s1-1} comb region no tree {u {u {u {u {u {l rcastooth.s_1_1_7} {l rcastooth.s1_1__6}} {u {l rcastooth.s2_1__6} {l rcastooth.s3_1__6}}} {u {u {l rcastooth.s4_1__6} {l rcastooth.s5_1__6}} {u {l rcastooth.s6_1__6} {l rcastooth.s7_1__6}}}} {u {u {u {l rcastooth.s8_1__6} {l rcastooth.s9_1__6}} {u {l rcastooth.s10_1_5} {l rcastooth.s11_1_4}}} {u {u {l rcastooth.s12_1_4} {l rcastooth.s13_1_3}} {u {l rcastooth.s14_1_3} {l rcastooth.s15_1_2}}}}} {u {u {u {l rcastooth.s16_1_2} {l rcastooth.s17_1_1}} {u {l rcastooth.s18_1_1} {l rcastooth.s19_1_1}}} {u {u {l rcastooth.s20_1_1_21} {l rcastooth.s21_1_1_22}} {l rcastooth.s22_1_1_23}}}}
|
||||
put {rcas14t.s1-1} comb region no tree {u {u {u {u {l rcastooth.s_1_1_3} {l rcastooth.s1_1__2}} {u {l rcastooth.s2_1__2} {l rcastooth.s3_1__2}}} {u {u {l rcastooth.s4_1__2} {l rcastooth.s5_1__2}} {u {l rcastooth.s6_1__2} {l rcastooth.s7_1__2}}}} {u {u {u {l rcastooth.s8_1__2} {l rcastooth.s9_1__2}} {u {l rcastooth.s10_1_1} {l rcastooth.s11_1_1_12}}} {l rcastooth.s12_1_1_13}}}
|
||||
put {rcas32t.s1-1} comb region no tree {u {u {u {u {u {l rcastooth.s_1_1_9} {l rcastooth.s1_1__8}} {u {l rcastooth.s2_1__8} {l rcastooth.s3_1__8}}} {u {u {l rcastooth.s4_1__8} {l rcastooth.s5_1__8}} {u {l rcastooth.s6_1__8} {l rcastooth.s7_1__8}}}} {u {u {u {l rcastooth.s8_1__8} {l rcastooth.s9_1__8}} {u {l rcastooth.s10_1_7} {l rcastooth.s11_1_6}}} {u {u {l rcastooth.s12_1_6} {l rcastooth.s13_1_5}} {u {l rcastooth.s14_1_5} {l rcastooth.s15_1_4}}}}} {u {u {u {u {l rcastooth.s16_1_4} {l rcastooth.s17_1_3}} {u {l rcastooth.s18_1_3} {l rcastooth.s19_1_3}}} {u {u {l rcastooth.s20_1_2} {l rcastooth.s21_1_2}} {u {l rcastooth.s22_1_2} {l rcastooth.s23_1_1}}}} {u {u {u {l rcastooth.s24_1_1} {l rcastooth.s25_1_1}} {u {l rcastooth.s26_1_1} {l rcastooth.s27_1_1_28}}} {u {u {l rcastooth.s28_1_1_29} {l rcastooth.s29_1_1_30}} {l rcastooth.s30_1_1_31}}}}}
|
||||
put {rcas12t.s1-1} comb region no tree {u {u {u {u {l rcastooth.s_1_1_2} {l rcastooth.s1_1__1}} {u {l rcastooth.s2_1__1} {l rcastooth.s3_1__1}}} {u {u {l rcastooth.s4_1__1} {l rcastooth.s5_1__1}} {u {l rcastooth.s6_1__1} {l rcastooth.s7_1__1}}}} {u {u {l rcastooth.s8_1__1} {l rcastooth.s9_1__1}} {l rcastooth.s10_1_1_11}}}
|
||||
put {rcas21t.s1-1} comb region no tree {u {u {u {u {u {l rcastooth.s_1_1_6} {l rcastooth.s1_1__5}} {u {l rcastooth.s2_1__5} {l rcastooth.s3_1__5}}} {u {u {l rcastooth.s4_1__5} {l rcastooth.s5_1__5}} {u {l rcastooth.s6_1__5} {l rcastooth.s7_1__5}}}} {u {u {u {l rcastooth.s8_1__5} {l rcastooth.s9_1__5}} {u {l rcastooth.s10_1_4} {l rcastooth.s11_1_3}}} {u {u {l rcastooth.s12_1_3} {l rcastooth.s13_1_2}} {u {l rcastooth.s14_1_2} {l rcastooth.s15_1_1}}}}} {u {u {l rcastooth.s16_1_1} {l rcastooth.s17_1_1_18}} {u {l rcastooth.s18_1_1_19} {l rcastooth.s19_1_1_20}}}}
|
||||
put {rcas11t.s1-1} comb region no tree {u {u {u {u {l rcastooth.s_1_1_1} {l rcastooth.s1_1_1_2}} {u {l rcastooth.s2_1_1_3} {l rcastooth.s3_1_1_4}}} {u {u {l rcastooth.s4_1_1_5} {l rcastooth.s5_1_1_6}} {u {l rcastooth.s6_1_1_7} {l rcastooth.s7_1_1_8}}}} {u {l rcastooth.s8_1_1_9} {l rcastooth.s9_1_1_10}}}
|
||||
put {rcastooth.s9_1__8} comb region no tree {l rcastooth.s {1 0 0 -16.3143 0 1 0 63.0097 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__8} comb region no tree {l rcastooth.s {1 0 0 -3.29663 0 1 0 65.004 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__7} comb region no tree {l rcastooth.s {1 0 0 -28.575 0 1 0 49.4934 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__8} comb region no tree {l rcastooth.s {1 0 0 9.85606 0 1 0 64.3369 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__7} comb region no tree {l rcastooth.s {1 0 0 -16.3908 0 1 0 54.7491 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__6} comb region no tree {l rcastooth.s {1 0 0 -38.1747 0 1 0 31.0574 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__8} comb region no tree {l rcastooth.s {1 0 0 22.6052 0 1 0 61.0359 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__7} comb region no tree {l rcastooth.s {1 0 0 -3.32298 0 1 0 57.0533 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__6} comb region no tree {l rcastooth.s {1 0 0 -28.3799 0 1 0 40.2051 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__8} comb region no tree {l rcastooth.s {1 0 0 34.4289 0 1 0 55.2361 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__5} comb region no tree {l rcastooth.s {1 0 0 -40.7647 0 1 0 13.2452 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__7} comb region no tree {l rcastooth.s {1 0 0 9.92399 0 1 0 56.2818 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__6} comb region no tree {l rcastooth.s {1 0 0 -16.4803 0 1 0 46.371 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__8} comb region no tree {l rcastooth.s {1 0 0 44.8431 0 1 0 47.175 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__5} comb region no tree {l rcastooth.s {1 0 0 -34.6765 0 1 0 25.1939 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__7} comb region no tree {l rcastooth.s {1 0 0 22.636 0 1 0 52.4761 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__4} comb region no tree {l rcastooth.s {1 0 0 -35.8908 0 1 0 -6.70915 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__6} comb region no tree {l rcastooth.s {1 0 0 -3.35838 0 1 0 49.0978 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__8} comb region no tree {l rcastooth.s {1 0 0 53.4214 0 1 0 37.1824 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__5} comb region no tree {l rcastooth.s {1 0 0 -25.1939 0 1 0 34.6765 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__7} comb region no tree {l rcastooth.s {1 0 0 34.1276 0 1 0 45.8413 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__4} comb region no tree {l rcastooth.s {1 0 0 -35.8908 0 1 0 6.70915 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__6} comb region no tree {l rcastooth.s {1 0 0 10.0126 0 1 0 48.1832 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__8} comb region no tree {l rcastooth.s {1 0 0 59.8127 0 1 0 25.6676 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__3} comb region no tree {l rcastooth.s {1 0 0 -26.4569 0 1 0 -19.222 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__5} comb region no tree {l rcastooth.s {1 0 0 -13.2452 0 1 0 40.7647 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__7} comb region no tree {l rcastooth.s {1 0 0 43.7794 0 1 0 36.7353 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__4} comb region no tree {l rcastooth.s {1 0 0 -31.0436 0 1 0 19.2214 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__6} comb region no tree {l rcastooth.s {1 0 0 22.641 0 1 0 43.6951 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__8} comb region no tree {l rcastooth.s {1 0 0 63.7552 0 1 0 13.102 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__3} comb region no tree {l rcastooth.s {1 0 0 -31.9879 0 1 0 -6.79923 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__5} comb region no tree {l rcastooth.s {1 0 0 -2.18745e-10 0 1 0 42.8625 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__7} comb region no tree {l rcastooth.s {1 0 0 51.0711 0 1 0 25.6489 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__2} comb region no tree {l rcastooth.s {1 0 0 -10.2229 0 1 0 -26.9556 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__4} comb region no tree {l rcastooth.s {1 0 0 -22.0037 0 1 0 29.1376 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__6} comb region no tree {l rcastooth.s {1 0 0 33.5901 0 1 0 35.9663 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__3} comb region no tree {l rcastooth.s {1 0 0 -31.9879 0 1 0 6.79923 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__5} comb region no tree {l rcastooth.s {1 0 0 13.2452 0 1 0 40.7647 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__7} comb region no tree {l rcastooth.s {1 0 0 55.6095 0 1 0 13.1797 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__2} comb region no tree {l rcastooth.s {1 0 0 -21.5788 0 1 0 -19.1172 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__4} comb region no tree {l rcastooth.s {1 0 0 -9.99212 0 1 0 35.1187 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__6} comb region no tree {l rcastooth.s {1 0 0 42.0481 0 1 0 25.57 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s9_1__1} comb region no tree {l rcastooth.s {1 0 0 10.2878 0 1 0 -22.527 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__3} comb region no tree {l rcastooth.s {1 0 0 -26.4569 0 1 0 19.222 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__5} comb region no tree {l rcastooth.s {1 0 0 25.1939 0 1 0 34.6765 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__2} comb region no tree {l rcastooth.s {1 0 0 -27.9913 0 1 0 -6.89923 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__4} comb region no tree {l rcastooth.s {1 0 0 3.36895 0 1 0 36.3567 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__6} comb region no tree {l rcastooth.s {1 0 0 47.3876 0 1 0 13.2774 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s8_1__1} comb region no tree {l rcastooth.s {1 0 0 -3.52443 0 1 0 -24.5129 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__3} comb region no tree {l rcastooth.s {1 0 0 -16.3513 0 1 0 28.3212 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__5} comb region no tree {l rcastooth.s {1 0 0 34.6765 0 1 0 25.1939 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__2} comb region no tree {l rcastooth.s {1 0 0 -27.9913 0 1 0 6.89923 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__4} comb region no tree {l rcastooth.s {1 0 0 16.275 0 1 0 32.6846 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s7_1__1} comb region no tree {l rcastooth.s {1 0 0 -16.2176 0 1 0 -18.7161 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__3} comb region no tree {l rcastooth.s {1 0 0 -3.41834 0 1 0 32.5234 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__5} comb region no tree {l rcastooth.s {1 0 0 40.7647 0 1 0 13.2452 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__2} comb region no tree {l rcastooth.s {1 0 0 -21.5788 0 1 0 19.1172 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__4} comb region no tree {l rcastooth.s {1 0 0 26.9831 0 1 0 24.5983 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s6_1__1} comb region no tree {l rcastooth.s {1 0 0 -23.7618 0 1 0 -6.97711 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__3} comb region no tree {l rcastooth.s {1 0 0 10.1056 0 1 0 31.1019 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__2} comb region no tree {l rcastooth.s {1 0 0 -10.2229 0 1 0 26.9556 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__4} comb region no tree {l rcastooth.s {1 0 0 34.0469 0 1 0 13.1898 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s5_1__1} comb region no tree {l rcastooth.s {1 0 0 -23.7618 0 1 0 6.97711 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__3} comb region no tree {l rcastooth.s {1 0 0 21.8822 0 1 0 24.3027 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_9} comb region no tree {l rcastooth.s {1 0 0 65.0875 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__2} comb region no tree {l rcastooth.s {1 0 0 3.47495 0 1 0 28.6188 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s4_1__1} comb region no tree {l rcastooth.s {1 0 0 -16.2176 0 1 0 18.7161 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__3} comb region no tree {l rcastooth.s {1 0 0 29.8752 0 1 0 13.3013 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__2} comb region no tree {l rcastooth.s {1 0 0 16.3767 0 1 0 23.7258 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_8} comb region no tree {l rcastooth.s {1 0 0 57.15 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s3_1__1} comb region no tree {l rcastooth.s {1 0 0 -3.52443 0 1 0 24.5129 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__2} comb region no tree {l rcastooth.s {1 0 0 25.5268 0 1 0 13.3975 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s2_1__1} comb region no tree {l rcastooth.s {1 0 0 10.2878 0 1 0 22.527 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_7} comb region no tree {l rcastooth.s {1 0 0 49.2125 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s1_1__1} comb region no tree {l rcastooth.s {1 0 0 20.8336 0 1 0 13.389 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_6} comb region no tree {l rcastooth.s {1 0 0 42.8625 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_5} comb region no tree {l rcastooth.s {1 0 0 36.5125 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_4} comb region no tree {l rcastooth.s {1 0 0 32.7025 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_3} comb region no tree {l rcastooth.s {1 0 0 28.829 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_2} comb region no tree {l rcastooth.s {1 0 0 24.765 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s_1_1_1} comb region no tree {l rcastooth.s {1 0 0 22.86 0 1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas28t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -57.14999999999999857891453 0} B {57.14999999999999857891453 0 0} C {0 -57.14999999999999857891453 0} D {57.14999999999999857891453 0 0}
|
||||
put {rcas18t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -36.51249999999999573674359 0} B {36.51249999999999573674359 0 0} C {0 -36.51249999999999573674359 0} D {36.51249999999999573674359 0 0}
|
||||
put {spkl_1_1_9} comb region no tree {l spkl {0.766044 0.642788 0 0 -0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_9} comb region no tree {l spkk {0.766044 0.642788 0 0 -0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas16t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -32.70250000000000056843419 0} B {32.70250000000000056843419 0 0} C {0 -32.70250000000000056843419 0} D {32.70250000000000056843419 0 0}
|
||||
put {spkj_1_1_9} comb region no tree {l spkj {0.766044 0.642788 0 0 -0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_8} comb region no tree {l spkl {0.173648 0.984808 0 0 -0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spki_1_1_9} comb region no tree {l spki {0.766044 0.642788 0 0 -0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas24t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -49.21249999999999857891453 0} B {49.21249999999999857891453 0 0} C {0 -49.21249999999999857891453 0} D {49.21249999999999857891453 0 0}
|
||||
put {spkk_1_1_8} comb region no tree {l spkk {0.173648 0.984808 0 0 -0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkj_1_1_8} comb region no tree {l spkj {0.173648 0.984808 0 0 -0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas14t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -28.82899999999999707256393 0} B {28.82899999999999707256393 0 0} C {0 -28.82899999999999707256393 0} D {28.82899999999999707256393 0 0}
|
||||
put {spkl_1_1_7} comb region no tree {l spkl {-0.5 0.866025 0 0 -0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas32t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -65.08749999999999147348717 0} B {65.08749999999999147348717 0 0} C {0 -65.08749999999999147348717 0} D {65.08749999999999147348717 0 0}
|
||||
put {spki_1_1_8} comb region no tree {l spki {0.173648 0.984808 0 0 -0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_7} comb region no tree {l spkk {-0.5 0.866025 0 0 -0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkj_1_1_7} comb region no tree {l spkj {-0.5 0.866025 0 0 -0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_6} comb region no tree {l spkl {-0.939693 0.34202 0 0 -0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas12t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -24.76499999999999701572051 0} B {24.76499999999999701572051 0 0} C {0 -24.76499999999999701572051 0} D {24.76499999999999701572051 0 0}
|
||||
put {rcas21t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -42.86249999999999715782906 0} B {42.86249999999999715782906 0 0} C {0 -42.86249999999999715782906 0} D {42.86249999999999715782906 0 0}
|
||||
put {spki_1_1_7} comb region no tree {l spki {-0.5 0.866025 0 0 -0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_6} comb region no tree {l spkk {-0.939693 0.34202 0 0 -0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcas11t.s1} tgc V {0 0 0} H {0 0 1.651000000000000023092639} A {0 -22.85999999999999943156581 0} B {22.85999999999999943156581 0 0} C {0 -22.85999999999999943156581 0} D {22.85999999999999943156581 0 0}
|
||||
put {spkj_1_1_6} comb region no tree {l spkj {-0.939693 0.34202 0 0 -0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_5} comb region no tree {l spkl {-0.939693 -0.34202 0 0 0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spki_1_1_6} comb region no tree {l spki {-0.939693 0.34202 0 0 -0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_5} comb region no tree {l spkk {-0.939693 -0.34202 0 0 0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkj_1_1_5} comb region no tree {l spkj {-0.939693 -0.34202 0 0 0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_4} comb region no tree {l spkl {-0.5 -0.866025 0 0 0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spki_1_1_5} comb region no tree {l spki {-0.939693 -0.34202 0 0 0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_4} comb region no tree {l spkk {-0.5 -0.866025 0 0 0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkj_1_1_4} comb region no tree {l spkj {-0.5 -0.866025 0 0 0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_3} comb region no tree {l spkl {0.173648 -0.984808 0 0 0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spki_1_1_4} comb region no tree {l spki {-0.5 -0.866025 0 0 0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_3} comb region no tree {l spkk {0.173648 -0.984808 0 0 0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkj_1_1_3} comb region no tree {l spkj {0.173648 -0.984808 0 0 0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_2} comb region no tree {l spkl {0.766044 -0.642788 0 0 0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spki_1_1_3} comb region no tree {l spki {0.173648 -0.984808 0 0 0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_2} comb region no tree {l spkk {0.766044 -0.642788 0 0 0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkj_1_1_2} comb region no tree {l spkj {0.766044 -0.642788 0 0 0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s19_1_3} comb region no tree {l rcastooth.s {1 0 0 -49.3857 0 1 0 -42.3962 0 0 1 0 0 0 0 1}}
|
||||
put {spkl_1_1_1} comb region no tree {l spkl}
|
||||
put {spki_1_1_2} comb region no tree {l spki {0.766044 -0.642788 0 0 0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {spkk_1_1_1} comb region no tree {l spkk}
|
||||
put {spkj_1_1_1} comb region no tree {l spkj}
|
||||
put {spki_1_1_1} comb region no tree {l spki}
|
||||
put {rcastooth.s18_1_3} comb region no tree {l rcastooth.s {1 0 0 -56.909 0 1 0 -31.5871 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s19_1_2} comb region no tree {l rcastooth.s {1 0 0 -16.3908 0 1 0 -54.7491 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s16_1_4} comb region no tree {l rcastooth.s {1 0 0 -64.7536 0 1 0 -6.58479 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s17_1_3} comb region no tree {l rcastooth.s {1 0 0 -62.1025 0 1 0 -19.4848 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s18_1_2} comb region no tree {l rcastooth.s {1 0 0 -28.575 0 1 0 -49.4934 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s14_1_5} comb region no tree {l rcastooth.s {1 0 0 -62.1025 0 1 0 19.4848 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s19_1_1} comb region no tree {l rcastooth.s {1 0 0 22.641 0 1 0 -43.6951 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s15_1_4} comb region no tree {l rcastooth.s {1 0 0 -64.7536 0 1 0 6.58479 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s16_1_3} comb region no tree {l rcastooth.s {1 0 0 -47.7481 0 1 0 -31.4044 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_6} comb region no tree {l rcastooth.s {1 0 0 -49.3857 0 1 0 42.3962 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s17_1_2} comb region no tree {l rcastooth.s {1 0 0 -39.2187 0 1 0 -41.5694 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s13_1_5} comb region no tree {l rcastooth.s {1 0 0 -56.909 0 1 0 31.5871 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s18_1_1} comb region no tree {l rcastooth.s {1 0 0 10.0126 0 1 0 -48.1832 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s14_1_4} comb region no tree {l rcastooth.s {1 0 0 -56.7636 0 1 0 -6.63471 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_7} comb region no tree {l rcastooth.s {1 0 0 -28.6642 0 1 0 58.4359 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s1sh} tgc V {177.7999999999999829469743 0 11.81099999999999994315658} H {38.09999999999999431565811 0 0} A {0 0 -2.285999999999999587885213} B {0 2.285999999999999587885213 0} C {0 0 -2.285999999999999587885213} D {0 2.285999999999999587885213 0}
|
||||
put {rcastooth.s15_1_3} comb region no tree {l rcastooth.s {1 0 0 -53.7034 0 1 0 -19.5465 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s11_1_6} comb region no tree {l rcastooth.s {1 0 0 -39.8404 0 1 0 51.4696 0 0 1 0 0 0 0 1}}
|
||||
put {rcas28t.c1} comb region no tree {- {l rcas28t.s1 {1 0 0 0 0 1 0 0 0 0 1 31.892875 0 0 0 1}} {l rcas28t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 31.892875 0 0 0 1}}}
|
||||
put {rcastooth.s16_1_2} comb region no tree {l rcastooth.s {1 0 0 -16.4803 0 1 0 -46.371 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_5} comb region no tree {l rcastooth.s {1 0 0 -53.7034 0 1 0 19.5465 0 0 1 0 0 0 0 1}}
|
||||
put {rcas18t.c1} comb region no tree {- {l rcas18t.s1 {1 0 0 0 0 1 0 0 0 0 1 18.2245 0 0 0 1}} {l rcas18t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 18.2245 0 0 0 1}}}
|
||||
put {rcastooth.s17_1_1} comb region no tree {l rcastooth.s {1 0 0 -3.35838 0 1 0 -49.0978 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s26_1_1} comb region no tree {l rcastooth.s {1 0 0 34.4289 0 1 0 -55.2361 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s13_1_4} comb region no tree {l rcastooth.s {1 0 0 -56.7636 0 1 0 6.63471 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s14_1_3} comb region no tree {l rcastooth.s {1 0 0 -38.1747 0 1 0 -31.0574 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_6} comb region no tree {l rcastooth.s {1 0 0 -39.2187 0 1 0 41.5694 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s15_1_2} comb region no tree {l rcastooth.s {1 0 0 -28.3799 0 1 0 -40.2051 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s11_1_5} comb region no tree {l rcastooth.s {1 0 0 -47.7481 0 1 0 31.4044 0 0 1 0 0 0 0 1}}
|
||||
put {rcas16t.c1} comb region no tree {- {l rcas16t.s1 {1 0 0 0 0 1 0 0 0 0 1 13.668375 0 0 0 1}} {l rcas16t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 13.668375 0 0 0 1}}}
|
||||
put {rcastooth.s16_1_1} comb region no tree {l rcastooth.s {1 0 0 13.2452 0 1 0 -40.7647 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s25_1_1} comb region no tree {l rcastooth.s {1 0 0 22.6052 0 1 0 -61.0359 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_4} comb region no tree {l rcastooth.s {1 0 0 -48.7541 0 1 0 -6.7011 0 0 1 0 0 0 0 1}}
|
||||
put {rcas24t.c1} comb region no tree {- {l rcas24t.s1 {1 0 0 0 0 1 0 0 0 0 1 27.33675 0 0 0 1}} {l rcas24t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 27.33675 0 0 0 1}}}
|
||||
put {rcastooth.s13_1_3} comb region no tree {l rcastooth.s {1 0 0 -45.1383 0 1 0 -19.6063 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s14_1_2} comb region no tree {l rcastooth.s {1 0 0 -13.2452 0 1 0 -40.7647 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_5} comb region no tree {l rcastooth.s {1 0 0 -45.1383 0 1 0 19.6063 0 0 1 0 0 0 0 1}}
|
||||
put {rcas14t.c1} comb region no tree {- {l rcas14t.s1 {1 0 0 0 0 1 0 0 0 0 1 9.11225 0 0 0 1}} {l rcas14t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 9.11225 0 0 0 1}}}
|
||||
put {rcas32t.c1} comb region no tree {- {l rcas32t.s1 {1 0 0 0 0 1 0 0 0 0 1 36.449 0 0 0 1}} {l rcas32t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 36.449 0 0 0 1}}}
|
||||
put {rcastooth.s15_1_1} comb region no tree {l rcastooth.s {1 0 0 2.2761e-10 0 1 0 -42.8625 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s24_1_1} comb region no tree {l rcastooth.s {1 0 0 9.85606 0 1 0 -64.3369 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s11_1_4} comb region no tree {l rcastooth.s {1 0 0 -48.7541 0 1 0 6.7011 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_3} comb region no tree {l rcastooth.s {1 0 0 -34.6765 0 1 0 -25.1939 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s13_1_2} comb region no tree {l rcastooth.s {1 0 0 -25.1939 0 1 0 -34.6765 0 0 1 0 0 0 0 1}}
|
||||
put {rcas12t.c1} comb region no tree {- {l rcas12t.s1 {1 0 0 0 0 1 0 0 0 0 1 4.556125 0 0 0 1}} {l rcas12t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 4.556125 0 0 0 1}}}
|
||||
put {rcastooth.s22_1_2} comb region no tree {l rcastooth.s {1 0 0 -16.3143 0 1 0 -63.0097 0 0 1 0 0 0 0 1}}
|
||||
put {rcas21t.c1} comb region no tree {- {l rcas21t.s1 {1 0 0 0 0 1 0 0 0 0 1 22.780625 0 0 0 1}} {l rcas21t.s1-1 {1 0 0 0 0 1 0 0 0 0 1 22.780625 0 0 0 1}}}
|
||||
put {rcastooth.s14_1_1} comb region no tree {l rcastooth.s {1 0 0 16.275 0 1 0 -32.6846 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s23_1_1} comb region no tree {l rcastooth.s {1 0 0 -3.29663 0 1 0 -65.004 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_4} comb region no tree {l rcastooth.s {1 0 0 -42.8625 0 1 0 -8.86496e-12 0 0 1 0 0 0 0 1}}
|
||||
put {rcas11t.c1} comb region no tree {- {l rcas11t.s1} {l rcas11t.s1-1}}
|
||||
put {rcastooth.s11_1_3} comb region no tree {l rcastooth.s {1 0 0 -40.7647 0 1 0 -13.2452 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_2} comb region no tree {l rcastooth.s {1 0 0 -9.99212 0 1 0 -35.1187 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s21_1_2} comb region no tree {l rcastooth.s {1 0 0 -28.6642 0 1 0 -58.4359 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s13_1_1} comb region no tree {l rcastooth.s {1 0 0 3.36895 0 1 0 -36.3567 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s22_1_1} comb region no tree {l rcastooth.s {1 0 0 22.636 0 1 0 -52.4761 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_3} comb region no tree {l rcastooth.s {1 0 0 -31.0436 0 1 0 -19.2214 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s11_1_2} comb region no tree {l rcastooth.s {1 0 0 -22.0037 0 1 0 -29.1376 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s20_1_2} comb region no tree {l rcastooth.s {1 0 0 -39.8404 0 1 0 -51.4696 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s12_1_1} comb region no tree {l rcastooth.s {1 0 0 10.1056 0 1 0 -31.1019 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s21_1_1} comb region no tree {l rcastooth.s {1 0 0 9.92399 0 1 0 -56.2818 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_2} comb region no tree {l rcastooth.s {1 0 0 -16.3512 0 1 0 -28.3212 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s11_1_1} comb region no tree {l rcastooth.s {1 0 0 -3.41834 0 1 0 -32.5234 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s20_1_1} comb region no tree {l rcastooth.s {1 0 0 -3.32298 0 1 0 -57.0533 0 0 1 0 0 0 0 1}}
|
||||
put {rcastooth.s10_1_1} comb region no tree {l rcastooth.s {1 0 0 3.47495 0 1 0 -28.6188 0 0 1 0 0 0 0 1}}
|
||||
put {rtire.s1-1} eto V {0 0 11.81099999999999994315658} N {0 0 25.39999999999999857891453} C {15.87499999999999822364316 0 0} r 222.25 r_d 14.28749999999999964472863
|
||||
put {spokes.r} comb region yes tree {u {u {l spoke_A} {l spoke_b}} {u {l spoke_c} {l spoke_d}}}
|
||||
attr set {spokes.r} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
|
||||
put {rrim.s29sh_1_1_29} comb region no tree {l rrim.s1sh {0.173648 0.984808 0 0 -0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s19sh_1_1_19} comb region no tree {l rrim.s1sh {-1 -9.79318e-12 0 0 9.79318e-12 -1 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s28sh_1_1_28} comb region no tree {l rrim.s1sh {-1.46898e-11 1 0 0 -1 -1.46898e-11 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s18sh_1_1_18} comb region no tree {l rrim.s1sh {-0.984808 -0.173648 0 0 0.173648 -0.984808 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s27sh_1_1_27} comb region no tree {l rrim.s1sh {-0.173648 0.984808 0 0 -0.984808 -0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s36sh_1_1_36} comb region no tree {l rrim.s1sh {0.984808 0.173648 0 0 -0.173648 0.984808 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s17sh_1_1_17} comb region no tree {l rrim.s1sh {-0.939693 -0.34202 0 0 0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s26sh_1_1_26} comb region no tree {l rrim.s1sh {-0.34202 0.939693 0 0 -0.939693 -0.34202 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s35sh_1_1_35} comb region no tree {l rrim.s1sh {0.939693 0.34202 0 0 -0.34202 0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s16sh_1_1_16} comb region no tree {l rrim.s1sh {-0.866025 -0.5 0 0 0.5 -0.866025 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s25sh_1_1_25} comb region no tree {l rrim.s1sh {-0.5 0.866025 0 0 -0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s34sh_1_1_34} comb region no tree {l rrim.s1sh {0.866025 0.5 0 0 -0.5 0.866025 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s15sh_1_1_15} comb region no tree {l rrim.s1sh {-0.766044 -0.642788 0 0 0.642788 -0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s24sh_1_1_24} comb region no tree {l rrim.s1sh {-0.642788 0.766044 0 0 -0.766044 -0.642788 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s33sh_1_1_33} comb region no tree {l rrim.s1sh {0.766044 0.642788 0 0 -0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s14sh_1_1_14} comb region no tree {l rrim.s1sh {-0.642788 -0.766044 0 0 0.766044 -0.642788 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s23sh_1_1_23} comb region no tree {l rrim.s1sh {-0.766044 0.642788 0 0 -0.642788 -0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s32sh_1_1_32} comb region no tree {l rrim.s1sh {0.642788 0.766044 0 0 -0.766044 0.642788 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s13sh_1_1_13} comb region no tree {l rrim.s1sh {-0.5 -0.866025 0 0 0.866025 -0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s22sh_1_1_22} comb region no tree {l rrim.s1sh {-0.866025 0.5 0 0 -0.5 -0.866025 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s31sh_1_1_31} comb region no tree {l rrim.s1sh {0.5 0.866025 0 0 -0.866025 0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s12sh_1_1_12} comb region no tree {l rrim.s1sh {-0.34202 -0.939693 0 0 0.939693 -0.34202 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s21sh_1_1_21} comb region no tree {l rrim.s1sh {-0.939693 0.34202 0 0 -0.34202 -0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s30sh_1_1_30} comb region no tree {l rrim.s1sh {0.34202 0.939693 0 0 -0.939693 0.34202 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s11sh_1_1_11} comb region no tree {l rrim.s1sh {-0.173648 -0.984808 0 0 0.984808 -0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s20sh_1_1_20} comb region no tree {l rrim.s1sh {-0.984808 0.173648 0 0 -0.173648 -0.984808 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s10sh_1_1_10} comb region no tree {l rrim.s1sh {4.89659e-12 -1 0 0 1 4.89659e-12 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s1-4} comb region no tree {- {l rrii} {l rri}}
|
||||
put {rrim.s1-3} comb region no tree {u {u {u {u {u {u {l rrim.s1sh_1_1_1} {l rrim.s2sh_1_1_2}} {u {l rrim.s3sh_1_1_3} {l rrim.s4sh_1_1_4}}} {u {u {l rrim.s5sh_1_1_5} {l rrim.s6sh_1_1_6}} {u {l rrim.s7sh_1_1_7} {l rrim.s8sh_1_1_8}}}} {u {u {u {l rrim.s9sh_1_1_9} {l rrim.s10sh_1_1_10}} {u {l rrim.s11sh_1_1_11} {l rrim.s12sh_1_1_12}}} {u {u {l rrim.s13sh_1_1_13} {l rrim.s14sh_1_1_14}} {u {l rrim.s15sh_1_1_15} {l rrim.s16sh_1_1_16}}}}} {u {u {u {u {l rrim.s17sh_1_1_17} {l rrim.s18sh_1_1_18}} {u {l rrim.s19sh_1_1_19} {l rrim.s20sh_1_1_20}}} {u {u {l rrim.s21sh_1_1_21} {l rrim.s22sh_1_1_22}} {u {l rrim.s23sh_1_1_23} {l rrim.s24sh_1_1_24}}}} {u {u {u {l rrim.s25sh_1_1_25} {l rrim.s26sh_1_1_26}} {u {l rrim.s27sh_1_1_27} {l rrim.s28sh_1_1_28}}} {u {u {l rrim.s29sh_1_1_29} {l rrim.s30sh_1_1_30}} {u {l rrim.s31sh_1_1_31} {l rrim.s32sh_1_1_32}}}}}} {u {u {l rrim.s33sh_1_1_33} {l rrim.s34sh_1_1_34}} {u {l rrim.s35sh_1_1_35} {l rrim.s36sh_1_1_36}}}}
|
||||
put {rrim.s1-2} tgc V {0 0 25.19983160980545022766819} H {0 0 -13.38883160980544850815477} A {0 197.3801853527571950053243 0} B {197.3801853527571950053243 0 0} C {0 192.8812499999999943156581 0} D {192.8812499999999943156581 0 0}
|
||||
put {rrim.s1-1} tgc V {0 0 -1.453479018435659853025754} H {0 0 14.75836748475629534027576} A {0 -197.3384002078076662201056 0} B {197.3384002078076662201056 0 0} C {0 -192.3792713486825789459544 0} D {192.3792713486825789459544 0 0}
|
||||
put {rhub.s5-1} comb region no tree {u {u {u {u {u {l rhspkh_1_1_1} {l rhspkh_1_1_2}} {u {l rhspkh_1_1_3} {l rhspkh_1_1_4}}} {u {u {l rhspkh_1_1_5} {l rhspkh_1_1_6}} {u {l rhspkh_1_1_7} {l rhspkh_1_1_8}}}} {u {u {u {l rhspkh_1_1_9} {l rhspkh_1_1_10}} {u {l rhspkh_1_1_11} {l rhspkh_1_1_12}}} {u {u {l rhspkh_1_1_13} {l rhspkh_1_1_14}} {u {l rhspkh_1_1_15} {l rhspkh_1_1_16}}}}} {u {l rhspkh_1_1_17} {l rhspkh_1_1_18}}}
|
||||
put {rhub.s3-1} comb region no tree {u {u {u {u {u {l rhspkh2_1_1_1} {l rhspkh2_1_1_2}} {u {l rhspkh2_1_1_3} {l rhspkh2_1_1_4}}} {u {u {l rhspkh2_1_1_5} {l rhspkh2_1_1_6}} {u {l rhspkh2_1_1_7} {l rhspkh2_1_1_8}}}} {u {u {u {l rhspkh2_1_1_9} {l rhspkh2_1_1_10}} {u {l rhspkh2_1_1_11} {l rhspkh2_1_1_12}}} {u {u {l rhspkh2_1_1_13} {l rhspkh2_1_1_14}} {u {l rhspkh2_1_1_15} {l rhspkh2_1_1_16}}}}} {u {l rhspkh2_1_1_17} {l rhspkh2_1_1_18}}}
|
||||
put {rhub.s1-1} tgc V {0 0 -1.587500000000000133226763} H {0 0 149.2249999999999943156581} A {0 -2.540000000000000035527137 0} B {2.540000000000000035527137 0 0} C {0 -2.540000000000000035527137 0} D {2.540000000000000035527137 0 0}
|
||||
put {rrimi.s2} tgc V {0 0 1.016000000000000014210855} H {0 0 21.59000000000000341060513} A {0 -208.5339999999999633928383 0} B {208.5339999999999633928383 0 0} C {0 -208.5339999999999633928383 0} D {208.5339999999999633928383 0 0}
|
||||
put {rtire.s1} eto V {0 0 11.81099999999999994315658} N {0 0 25.39999999999999857891453} C {17.46249999999999857891453 0 0} r 222.25 r_d 15.875
|
||||
put {rrimi.s1} tgc V {0 0 2.032000000000000028421709} H {0 0 19.55799999999999982946974} A {0 -211.1374999999999602096068 0} B {211.1374999999999602096068 0 0} C {0 -211.1374999999999602096068 0} D {211.1374999999999602096068 0 0}
|
||||
put {rtire.r1} comb region yes tree {- {- {l rtire.s1 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}} {l rrim.s1 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}}} {l rtire.s1-1 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}}}
|
||||
attr set {rtire.r1} {color} {33/33/33} {shader} {stack {{fbmbump {o 4 s 5 a 30}} {plastic {}}}} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
|
||||
put {spoke_d} comb region no tree {u {u {u {u {l spkj_1_1_1} {l spkj_1_1_2}} {u {l spkj_1_1_3} {l spkj_1_1_4}}} {u {u {l spkj_1_1_5} {l spkj_1_1_6}} {u {l spkj_1_1_7} {l spkj_1_1_8}}}} {l spkj_1_1_9}}
|
||||
put {spoke_c} comb region no tree {u {u {u {u {l spki_1_1_1} {l spki_1_1_2}} {u {l spki_1_1_3} {l spki_1_1_4}}} {u {u {l spki_1_1_5} {l spki_1_1_6}} {u {l spki_1_1_7} {l spki_1_1_8}}}} {l spki_1_1_9}}
|
||||
put {spoke_b} comb region no tree {u {u {u {u {l spkl_1_1_1} {l spkl_1_1_2}} {u {l spkl_1_1_3} {l spkl_1_1_4}}} {u {u {l spkl_1_1_5} {l spkl_1_1_6}} {u {l spkl_1_1_7} {l spkl_1_1_8}}}} {l spkl_1_1_9}}
|
||||
put {spoke_A} comb region no tree {u {u {u {u {l spkk_1_1_1} {l spkk_1_1_2}} {u {l spkk_1_1_3} {l spkk_1_1_4}}} {u {u {l spkk_1_1_5} {l spkk_1_1_6}} {u {l spkk_1_1_7} {l spkk_1_1_8}}}} {l spkk_1_1_9}}
|
||||
put {rhspkh2} tgc V {21.7622817260637724245953 3.83727743008382748968188 35.05199999999999249666871} H {0 0 3.809999999999999609201495} A {0.2756664820462519926991263 -1.563382307906880042125408 0} B {1.563382307906880042125408 0.2756664820462519926991263 0} C {0.2756664820462519926991263 -1.563382307906880042125408 0} D {1.563382307906880042125408 0.2756664820462519926991263 0}
|
||||
put {rrim.s1} tgc V {0 0 0} H {0 0 23.62199999999999988631316} A {0 -209.5499999999999829469743 0} B {209.5499999999999829469743 0 0} C {0 -209.5499999999999829469743 0} D {209.5499999999999829469743 0 0}
|
||||
put {rhub.s5} tgc V {0 0 91.5669999999999930651029} H {0 0 3.174999999999999822364316} A {0 -26.86049999999999826627572 0} B {26.8605000000000018189894 0 0} C {0 -26.86049999999999826627572 0} D {26.8605000000000018189894 0 0}
|
||||
put {rrim.r1} comb region yes tree {- {- {- {- {l rrim.s1 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}} {l rrim.s1-1 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}}} {l rrim.s1-2 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}}} {l rrim.s1-3 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}}} {l rrim.s1-4 {1 0 0 0 0 1 0 0 0 0 1 61.214 0 0 0 1}}}
|
||||
attr set {rrim.r1} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {rhub.s4} tgc V {0 0 38.73499999999999232613845} H {0 0 52.83200000000000073896445} A {0 -15.04950000000000009947598 0} B {15.04950000000000009947598 0 0} C {0 -15.04950000000000009947598 0} D {15.04950000000000009947598 0 0}
|
||||
put {rhub.s3} tgc V {0 0 35.5599999999999951683094} H {0 0 3.174999999999999822364316} A {0 -26.86049999999999826627572 0} B {26.8605000000000018189894 0 0} C {0 -26.86049999999999826627572 0} D {26.8605000000000018189894 0 0}
|
||||
put {rhub.s2} tgc V {0 0 12.69999999999999928945726} H {0 0 22.85999999999999943156581} A {0 -6.349999999999999644728632 0} B {6.349999999999999644728632 0 0} C {0 -11.42999999999999971578291 0} D {11.42999999999999971578291 0 0}
|
||||
put {rcas.s2} tgc V {0 0 0} H {0 0 38.09999999999999431565811} A {0 -17.7799999999999975841547 0} B {17.7799999999999975841547 0 0} C {0 -17.7799999999999975841547 0} D {17.7799999999999975841547 0 0}
|
||||
put {rhub.s1} tgc V {0 0 0} H {0 0 146.0499999999999829469743} A {0 -4.889499999999999957367436 0} B {4.889499999999999957367436 0 0} C {0 -4.889499999999999957367436 0} D {4.889499999999999957367436 0 0}
|
||||
put {rhub.r1} comb region yes tree {u {u {u {u {- {l rhub.s1} {l rhub.s1-1}} {l rhub.s2}} {- {l rhub.s3} {l rhub.s3-1}}} {l rhub.s4}} {- {l rhub.s5} {l rhub.s5-1}}}
|
||||
attr set {rhub.r1} {color} {35/35/35} {shader} {plastic} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {rhspkh} tgc V {22.09799999999999897681846 0 91.43999999999999772626325} H {0 0 3.809999999999999609201495} A {0 -1.587499999999999911182158 0} B {1.587499999999999911182158 0 0} C {0 -1.587499999999999911182158 0} D {1.587499999999999911182158 0 0}
|
||||
put {rwheel} comb region no tree {u {u {u {l rcassette.r {1 0 0 0 0 -1 0 0 0 0 -1 139.7 0 0 0 1}} {l rhub.r1}} {u {l rrim.r1} {l rtire.r1}}} {l spokes.r}}
|
||||
put {rri.s3} tor V {0 0 23.62199999999999988631316} H {0 0 0.9999999999999998889776975} r_a 196.8499999999999943156581 r_h 6.349999999999999644728632
|
||||
put {rri.s2} tor V {0 0 0} H {0 0 0.9999999999999998889776975} r_a 196.8499999999999943156581 r_h 6.349999999999999644728632
|
||||
put {rri.s1} tgc V {0 0 5.080000000000000071054274} H {0 0 13.97000000000000063948846} A {0 -196.8499999999999658939487 0} B {196.8499999999999943156581 0 0} C {0 -196.8499999999999658939487 0} D {196.8499999999999943156581 0 0}
|
||||
put {rrim.s9sh_1_1_9} comb region no tree {l rrim.s1sh {0.173648 -0.984808 0 0 0.984808 0.173648 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s8sh_1_1_8} comb region no tree {l rrim.s1sh {0.34202 -0.939693 0 0 0.939693 0.34202 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s7sh_1_1_7} comb region no tree {l rrim.s1sh {0.5 -0.866025 0 0 0.866025 0.5 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s6sh_1_1_6} comb region no tree {l rrim.s1sh {0.642788 -0.766044 0 0 0.766044 0.642788 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s5sh_1_1_5} comb region no tree {l rrim.s1sh {0.766044 -0.642788 0 0 0.642788 0.766044 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s4sh_1_1_4} comb region no tree {l rrim.s1sh {0.866025 -0.5 0 0 0.5 0.866025 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s3sh_1_1_3} comb region no tree {l rrim.s1sh {0.939693 -0.34202 0 0 0.34202 0.939693 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s2sh_1_1_2} comb region no tree {l rrim.s1sh {0.984808 -0.173648 0 0 0.173648 0.984808 0 0 0 0 1 0 0 0 0 1}}
|
||||
put {rrim.s1sh_1_1_1} comb region no tree {l rrim.s1sh}
|
||||
put {spkl} pipe V0 { 20.76709480285642683838887 7.551670837402355118683772 90.65737819671632280460472 } O0 1.337557689563829255163796 I0 -0 R0 1.778000000000000024868996 V1 { 20.77675991058347904072434 7.551670837402345348721155 91.2437280654907425514466 } O1 3.550397189753127680234002 I1 -0 R1 1.778000000000000024868996 V2 { 20.76548395156863691113358 7.551670837402342684185896 92.05237541198734163572226 } O2 1.778000000000000024868996 I2 -0 R2 1.778000000000000024868996 V3 { 20.76709480285642328567519 7.551670837402365776824809 97.27797698974610796085472 } O3 1.778000000000000024868996 I3 -0 R3 1.778000000000000024868996 V4 { 96.65107727050778407829057 -168.714120483398488659077 72.89613189697269035605132 } O4 1.778000000000000024868996 I4 -0 R4 1.778000000000000024868996
|
||||
put {spkk} pipe V0 { 22.11288281250000409272616 0.01288681030274606807706217 95.60269165039063921085472 } O0 1.785138282554655120293319 I0 -0 R0 6.598046874999998756550212 V1 { 22.11288281250000409272616 0.01288681030274606807706217 95.03567199707032386868377 } O1 4.070271197360822768018807 I1 -0 R1 6.598046874999998756550212 V2 { 22.11288281250001475086719 0.01288681030274606807706217 93.65678329467775142802566 } O2 1.778000000000000024868996 I2 -0 R2 6.598046874999998756550212 V3 { 22.10339501953125207478479 0.08911623464794377058595387 90.33015632036135400539933 } O3 1.778000000000000024868996 I3 -0 R3 2.496955272208652765186798 V4 { 33.55725402832030823674359 192.3227569580077442878974 73.30678124999998601651896 } O4 1.778000000000000024868996 I4 -0 R4 6.598046874999998756550212
|
||||
put {spkj} pipe V0 { 19.1582472419363760707256 10.97847094045843441278976 39.25328368547360469165142 } O0 1.074875597385660741522884 I0 -0 R0 1.778000000000000024868996 V1 { 19.15824724193638672886664 10.97847094045843441278976 38.81835383775631953540142 } O1 3.552089230759687854543927 I1 -0 R1 1.778000000000000024868996 V2 { 19.15824724193635120172985 10.97847094045843441278976 38.33187674882810114240783 } O2 1.778000000000000024868996 I2 -0 R2 1.778000000000000024868996 V3 { 19.15824724193635830715721 10.97847094045843441278976 32.88719939592282770490783 } O3 1.778000000000000024868996 I3 -0 R3 1.778000000000000024868996 V4 { 124.1515304565429431704615 -148.5849227905274005934189 73.63529357316897971941216 } O4 1.778000000000000024868996 I4 -0 R4 1.778000000000000024868996
|
||||
put {spki} pipe V0 { 21.85159059520787394603758 3.839178032743594037867751 34.56892814042966932674972 } O0 1.778000000000000024868996 I0 -0 R0 1.778000000000000024868996 V1 { 21.85159059520787749875126 3.839178032743594037867751 34.81377753618162529392066 } O1 3.311175825425637153642811 I1 -0 R1 1.778000000000000024868996 V2 { 21.85159059520787749875126 3.839178032743594037867751 35.07151374223631279392066 } O2 1.777999999999999802824391 I2 -0 R2 1.778000000000000024868996 V3 { 21.85159059520787394603758 3.848843140470644463846384 39.34188050630491062520377 } O3 1.777999999999999802824391 I3 -0 R3 1.778000000000000024868996 V4 { 0 192.9928710937499261035555 72.84086766820408342937299 } O4 1.777999999999999802824391 I4 -0 R4 1.778000000000000024868996
|
||||
put {rrii} comb region no tree {u {l rrimi.s1} {l rrimi.s2}}
|
||||
put {rri} comb region no tree {u {u {l rri.s1} {l rri.s2}} {l rri.s3}}
|
||||
@@ -1,5 +1,4 @@
|
||||
set(
|
||||
CHESS_PARTS
|
||||
set(CHESS_PARTS
|
||||
bishop.asc
|
||||
chessboard.asc
|
||||
king.asc
|
||||
@@ -7,16 +6,16 @@ set(
|
||||
pawn.asc
|
||||
queen.asc
|
||||
rook.asc
|
||||
)
|
||||
)
|
||||
|
||||
foreach(piece ${CHESS_PARTS})
|
||||
g_target(${piece} "BRL-CAD Geometry Models/Sample/Chess")
|
||||
ADD_G_TARGET(${piece} "BRL-CAD Geometry Models/Sample/Chess")
|
||||
endforeach(piece ${CHESS_PARTS})
|
||||
|
||||
cmakefiles(
|
||||
CMAKEFILES(
|
||||
${CHESS_PARTS}
|
||||
CMakeLists.txt
|
||||
)
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
set(COMGEOM_V5_MODELS ADA073408.comgeom)
|
||||
set(COMGEOM_V5_MODELS
|
||||
ADA073408.comgeom
|
||||
)
|
||||
|
||||
foreach(comgeom_input ${COMGEOM_V5_MODELS})
|
||||
g_target(${comgeom_input} "BRL-CAD Geometry Models/Sample")
|
||||
ADD_G_TARGET(${comgeom_input} "BRL-CAD Geometry Models/Sample")
|
||||
endforeach(comgeom_input ${COMGEOM_V5_MODELS})
|
||||
|
||||
cmakefiles(
|
||||
CMAKEFILES(
|
||||
${COMGEOM_V5_MODELS}
|
||||
CMakeLists.txt
|
||||
README_ADA073408
|
||||
|
||||
Regular → Executable
+1
-1
@@ -2,7 +2,7 @@
|
||||
# C U B E . R T
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2004-2026 United States Government as represented by
|
||||
# Copyright (c) 2004-2020 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/* D B . P H P
|
||||
* BRL-CAD
|
||||
*
|
||||
* Copyright (c) 2004-2026 United States Government as represented by
|
||||
* Copyright (c) 2004-2020 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
title {Earth Model v1.1 by starseeker}
|
||||
units km
|
||||
put {mesosphere.s} ell V {0 0 0} A {6468100000 0 0} B {0 6468100000 0} C {0 0 6446800000}
|
||||
put {mesosphere.c} comb region no tree {- {l mesosphere.s} {l stratosphere.s}}
|
||||
attr set {mesosphere.c} {shader} {glass {tr 0.85}}
|
||||
put {atmosphere.c} comb region no tree {u {u {- {l mesosphere.c} {l slice-earth-2.s}} {- {l stratosphere.c} {l slice-earth-2.s}}} {- {l troposphere.c} {l slice-earth-2.s}}}
|
||||
put {outer-core.s} ell V {0 0 0} A {-2394906651.625486850738525 1382699999.999999523162842 0} B {-1382699999.999999523162842 -2394906651.625486850738525 0} C {0 0 2750000000}
|
||||
put {inner-core.s} ell V {0 0 0} A {-1047890738.579170942306519 604999999.9999997615814209 0} B {-604999999.9999997615814209 -1047890738.579170942306519 0} C {0 0 1210000000}
|
||||
put {inner-core.r} comb region yes tree {n {l inner-core.s} {l slice-earth-2.s}}
|
||||
attr set {inner-core.r} {color} {255/255/255} {shader} {plastic {sp 0.9 di 0.1}} {region} {R} {region_id} {1003} {material_id} {1} {los} {100}
|
||||
put {lower-mantle-core-subtract.c} comb region no tree {u {l outer-core.s} {l inner-core.s}}
|
||||
put {upper-mantle-core-subtract.c} comb region no tree {u {u {l lower-mantle.s} {l outer-core.s}} {l inner-core.s}}
|
||||
put {slice-earth-outcore.s} arb8 V1 {1000000 1000000 1000000} V2 {1500000000 11550000000 1500000000} V3 {11550000000 1500000000 1500000000} V4 {1000000 1000000 1000000} V5 {1500000000 1500000000 11550000000} V6 {1500000000 1500000000 11550000000} V7 {1500000000 1500000000 11550000000} V8 {1500000000 1500000000 11550000000}
|
||||
put {crust-core-subtract.c} comb region no tree {u {u {l upper-mantle.s} {l lower-mantle.s}} {u {l outer-core.s} {l inner-core.s}}}
|
||||
put {outer-core-display.r} comb region yes tree {- {n {l outer-core.s} {l slice-earth-2.s}} {l inner-core.s}}
|
||||
attr set {outer-core-display.r} {color} {254/255/178} {shader} {plastic} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
|
||||
put {slice-earth-lowman.s} arb8 V1 {1000000 1000000 1000000} V2 {1000000000 11550000000 1000000000} V3 {11550000000 1000000000 1000000000} V4 {1000000 1000000 1000000} V5 {1000000000 1000000000 11550000000} V6 {1000000000 1000000000 11550000000} V7 {1000000000 1000000000 11550000000} V8 {1000000000 1000000000 11550000000}
|
||||
put {earth-cutaway.c} comb region no tree {- {l earth-crust.c} {l slice-earth.s}}
|
||||
put {earth-display.c} comb region no tree {u {u {u {u {u {l earth-cutaway.c} {l cutout-earth-backdrop.c}} {- {l upper-mantle-display.r} {l slice-earth-upman.s}}} {- {l lower-mantle-display.r} {l slice-earth-lowman.s}}} {- {l outer-core-display.r} {l slice-earth-outcore.s}}} {l inner-core.r}}
|
||||
put {stratosphere.s} ell V {0 0 0} A {6428100000 0 0} B {0 6428100000 0} C {0 0 6406800000}
|
||||
put {stratosphere.c} comb region no tree {- {l stratosphere.s} {l troposphere.s}}
|
||||
attr set {stratosphere.c} {shader} {glass {tr 0.8}}
|
||||
put {cutout-earth-backdrop.c} comb region no tree {n {l cutout-earth.c} {l earth-crust.s}}
|
||||
put {lower-mantle.s} ell V {0 0 0} A {-4900404747.314247131347656 2829249999.999999046325684 0} B {-2829249999.999999046325684 -4900404747.314247131347656 0} C {0 0 5640000000}
|
||||
put {upper-mantle.s} ell V {0 0 0} A {-5474406384.942572593688965 3160649999.999999046325684 0} B {-3160649999.999999046325684 -5474406384.942572593688965 0} C {0 0 6300000000}
|
||||
put {slice-earth-2.s} arb8 V1 {1000000 1000000 1000000} V2 {1000000 11550000000 1000000} V3 {11550000000 1000000 1000000} V4 {1000000 1000000 1000000} V5 {1000000 1000000 11550000000} V6 {1000000 1000000 11550000000} V7 {1000000 1000000 11550000000} V8 {1000000 1000000 11550000000}
|
||||
put {slice-earth-upman.s} arb8 V1 {1000000 1000000 1000000} V2 {500000000 11550000000 500000000} V3 {11550000000 500000000 500000000} V4 {1000000 1000000 1000000} V5 {500000000 500000000 11550000000} V6 {500000000 500000000 11550000000} V7 {500000000 500000000 11550000000} V8 {500000000 500000000 11550000000}
|
||||
put {cutout-earth.c} comb region no tree {- {l slice-earth.s} {l slice-earth-2.s}}
|
||||
put {troposphere.s} ell V {0 0 0} A {6396100000 0 0} B {0 6396100000 0} C {0 0 6374800000}
|
||||
put {earth-crust.s} ell V {0 0 0} A {-5523596627.877529144287109 3189049999.999999046325684 0} B {-3189049999.999999046325684 -5523596627.877529144287109 0} C {0 0 6356800000}
|
||||
put {troposphere.c} comb region no tree {- {l troposphere.s} {l earth-crust.s}}
|
||||
attr set {troposphere.c} {shader} {stack {{cloud {}} {glass {tr 0.65}}}}
|
||||
put {earth-crust.c} comb region no tree {- {l earth-crust.s} {l crust-core-subtract.c}}
|
||||
attr set {earth-crust.c} {shader} {texture {file earth.pix w 2048 n 1024}}
|
||||
put {slice-earth.s} arb8 V1 {0 0 0} V2 {0 11500000000 0} V3 {11500000000 0 0} V4 {0 0 0} V5 {0 0 11500000000} V6 {0 0 11500000000} V7 {0 0 11500000000} V8 {0 0 11500000000}
|
||||
put {lower-mantle-display.r} comb region yes tree {- {n {l lower-mantle.s} {l slice-earth-2.s}} {l lower-mantle-core-subtract.c}}
|
||||
attr set {lower-mantle-display.r} {color} {255/255/0} {shader} {plastic} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {upper-mantle-display.r} comb region yes tree {- {n {l upper-mantle.s} {l slice-earth-2.s}} {l upper-mantle-core-subtract.c}}
|
||||
attr set {upper-mantle-display.r} {color} {254/160/60} {shader} {plastic} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 MiB |
Binary file not shown.
@@ -1,14 +1,17 @@
|
||||
set(FAA_SAMPLE_MODELS Business_Jet.fg4 Generic_Twin.fg4)
|
||||
set(FAA_SAMPLE_MODELS
|
||||
Business_Jet.fg4
|
||||
Generic_Twin.fg4
|
||||
)
|
||||
|
||||
foreach(faa_input ${FAA_SAMPLE_MODELS})
|
||||
g_target(${faa_input} "BRL-CAD Geometry Models/Sample")
|
||||
ADD_G_TARGET(${faa_input} "BRL-CAD Geometry Models/Sample")
|
||||
endforeach(faa_input ${FAA_SAMPLE_MODELS})
|
||||
|
||||
cmakefiles(
|
||||
CMAKEFILES(
|
||||
${FAA_SAMPLE_MODELS}
|
||||
CMakeLists.txt
|
||||
README
|
||||
)
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
@@ -64920,7 +64920,7 @@ CQUAD 12 13 4 12 16 8 0.000 2
|
||||
CCONE2 1 4 17 18 2.250 +
|
||||
+ 2.250 0.000 0.000
|
||||
SECTION 3 168 2 1
|
||||
$NAME 3 168 Horizontal Stabilator Vector Pulley left forward
|
||||
$NAME 3 168 Horiztonal Stabilator Vector Pulley left forward
|
||||
$COMMENT12345678123456781234567812345678123456781234567812345678123456781234567812345678
|
||||
$COMMENT 2 3 4 5 6 7 8 9 10
|
||||
GRID 1 -280.990 6.010 208.570
|
||||
@@ -64992,7 +64992,7 @@ CQUAD 12 13 4 12 16 8 0.000 2
|
||||
CCONE2 1 4 17 18 0.500 +
|
||||
+ 0.500 0.000 0.000
|
||||
SECTION 3 170 2 1
|
||||
$NAME 3 170 Horizontal Stabilator Vector Pulley left aft
|
||||
$NAME 3 170 Horiztonal Stabilator Vector Pulley left aft
|
||||
$COMMENT12345678123456781234567812345678123456781234567812345678123456781234567812345678
|
||||
$COMMENT 2 3 4 5 6 7 8 9 10
|
||||
GRID 1 -1239.68 7.150 204.800
|
||||
@@ -65064,7 +65064,7 @@ CQUAD 12 13 4 12 16 8 0.000 2
|
||||
CCONE2 1 4 17 18 0.500 +
|
||||
+ 0.500 0.000 0.000
|
||||
SECTION 3 172 2 1
|
||||
$NAME 3 172 Horizontal Stabilator Vector Pulley right forward
|
||||
$NAME 3 172 Horiztonal Stabilator Vector Pulley right forward
|
||||
$COMMENT12345678123456781234567812345678123456781234567812345678123456781234567812345678
|
||||
$COMMENT 2 3 4 5 6 7 8 9 10
|
||||
GRID 1 -280.990 -6.010 208.570
|
||||
@@ -65136,7 +65136,7 @@ CQUAD 12 13 4 12 16 8 0.000 2
|
||||
CCONE2 1 4 17 18 0.500 +
|
||||
+ 0.500 0.000 0.000
|
||||
SECTION 3 174 2 1
|
||||
$NAME 3 174 Horizontal Stabilator Vector Pulley right aft
|
||||
$NAME 3 174 Horiztonal Stabilator Vector Pulley right aft
|
||||
$COMMENT12345678123456781234567812345678123456781234567812345678123456781234567812345678
|
||||
$COMMENT 2 3 4 5 6 7 8 9 10
|
||||
GRID 1 -1239.68 -7.150 204.800
|
||||
@@ -209761,7 +209761,7 @@ CTRI 10 1 4 6 8 0.100 2
|
||||
CTRI 11 1 5 7 1 0.100 2
|
||||
CTRI 12 1 7 2 1 0.100 2
|
||||
SECTION 9 639 2 0
|
||||
$NAME 9 639 Standby power control unit
|
||||
$NAME 9 639 Standby power contol unit
|
||||
GRID 1 -217.100 -43.700 249.434
|
||||
GRID 2 -217.100 -44.700 247.434
|
||||
GRID 3 -217.000 -43.700 249.434
|
||||
|
||||
-78680
File diff suppressed because it is too large
Load Diff
+11817
-3473
File diff suppressed because one or more lines are too long
@@ -1,5 +1,4 @@
|
||||
set(
|
||||
NIST_SAMPLE_MODELS
|
||||
set(NIST_SAMPLE_MODELS
|
||||
NIST_MBE_PMI_1.stp
|
||||
NIST_MBE_PMI_2.stp
|
||||
NIST_MBE_PMI_3.stp
|
||||
@@ -11,10 +10,10 @@ set(
|
||||
)
|
||||
|
||||
foreach(im ${NIST_SAMPLE_MODELS})
|
||||
g_target(${im} "BRL-CAD Geometry Models/Sample")
|
||||
ADD_G_TARGET(${im} "BRL-CAD Geometry Models/Sample")
|
||||
endforeach(im ${NIST_SAMPLE_MODELS})
|
||||
|
||||
cmakefiles(
|
||||
CMAKEFILES(
|
||||
${NIST_SAMPLE_MODELS}
|
||||
CMakeLists.txt
|
||||
README
|
||||
@@ -30,7 +29,7 @@ cmakefiles(
|
||||
pdf/9.pdf
|
||||
pdf/10.pdf
|
||||
pdf/11.pdf
|
||||
)
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
title {Photo holder by csanyi_pal}
|
||||
units mm
|
||||
put {keretgyurf.s} eto V {0 0 175} N {0 0 0.9866229999999999167314968} C {0 0 4.933115000000001693081231} r 156 r_d 2.959869000000000749395213
|
||||
put {keretgyura.s} eto V {0 0 25} N {0 0 0.9863332009625119800588777} C {0 0 4.931666004812560011316691} r 156 r_d 2.95899960288753804960038
|
||||
put {kartonekhk.s} tgc V {0 0 20} H {0 0 160} A {0 -162 0} B {162 0 0} C {0 -162 0} D {162 0 0}
|
||||
put {kartonekhb.s} tgc V {0 0 20} H {0 0 160} A {0 -161 0} B {161 0 0} C {0 -161 0} D {161 0 0}
|
||||
put {uvegszelo.s} arb8 V1 {0 0 0} V2 {-273.2568000000004531102604 -199.463712010076335445774 0} V3 {-273.2568000000004531102604 -199.4637120100763070240646 200} V4 {-2.137306219959771470627159E-14 1.560125977964318386935442E-14 199.9999999999999715782906} V5 {-273.2568000000009078576113 199.4637120100766765062872 0} V6 {-273.2568000000009078576113 199.4637120100766765062872 0} V7 {-273.2568000000009078576113 199.4637120100766765062872 200.0000000000001705302566} V8 {-273.2568000000009078576113 199.4637120100766765062872 200.0000000000001705302566}
|
||||
put {kereteehj.s} tgc V {-144.7437920000004965004337 58.16567399999996013093551 20} H {0 0 160} A {1.791839747726502229951961 4.667902132486008603962091 0} B {-2.800741279491604895923729 1.075103848635900805064125 0} C {1.791839747726502229951961 4.667902132486008603962091 0} D {-2.800741279491604895923729 1.075103848635900805064125 0}
|
||||
put {kereteehb.s} tgc V {-144.6299540000000831696525 -58.43016799999981714108799 20} H {0 0 160} A {1.873032967079560906498159 -4.635919272833937121447434 0} B {2.781551563700361828779251 1.123819780247735433675871 0} C {1.873032967079560906498159 -4.635919272833937121447434 0} D {2.781551563700361828779251 1.123819780247735433675871 0}
|
||||
put {kereteehjkicsi.s} tgc V {-144.736713000000236206688 58.16567399999982512781571 25} H {0 0 150} A {1.791839747726502229951961 4.667902132486008603962091 0} B {-2.800741279491604895923729 1.075103848635900805064125 0} C {1.791839747726502229951961 4.667902132486008603962091 0} D {-2.800741279491604895923729 1.075103848635900805064125 0}
|
||||
put {keptarto.c} comb region no tree {u {u {l uveglap.r} {l karton.r}} {l keret.r}}
|
||||
put {kereteehbkicsi.s} tgc V {-144.6299510000000339005055 -58.43016799999985266822478 25.00000000000002842170943} H {0 0 150} A {1.873032967079560906498159 -4.635919272833937121447434 0} B {2.781551563700361828779251 1.123819780247735433675871 0} C {1.873032967079560906498159 -4.635919272833937121447434 0} D {2.781551563700361828779251 1.123819780247735433675871 0}
|
||||
put {uvegekhk.s} tgc V {0 0 0} H {0 0 200} A {0 -160 0} B {160 0 0} C {0 -160 0} D {160 0 0}
|
||||
put {uvegekhb.s} tgc V {0 0 0} H {0 0 200} A {0 -156 0} B {156 0 0} C {0 -156 0} D {156 0 0}
|
||||
put {uveglap.r} comb region yes tree {n {- {l uvegekhk.s} {l uvegekhb.s}} {l uvegszelo.s}}
|
||||
attr set {uveglap.r} {color} {254/240/254} {shader} {glass} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
|
||||
put {kartonkozepenlyuk.s} ell V {-161.3665119999998296407284 9.880522794467734402637521E-15 100.0809629999999117444531} A {7.347638122934263549268508E-16 12 0} B {-12 7.347638122934263549268508E-16 0} C {0 0 12}
|
||||
put {karton.r} comb region yes tree {u {- {- {- {- {n {- {l kartonekhk.s} {l kartonekhb.s}} {l kartonszelok.s}} {l kartongmbab.s}} {l kartongmbaj.s}} {l kartongmbfk.s}} {l kartonkozepenlyuk.s}} {- {- {- {n {- {l kartonekhb.s} {l uvegekhk.s}} {l kartonszelok.s}} {l kartonszelob.s}} {l kartongmbab.s}} {l kartongmbaj.s}}}
|
||||
attr set {karton.r} {color} {255/255/255} {shader} {plastic} {region} {R} {region_id} {1003} {material_id} {1} {los} {100}
|
||||
put {keretszelokozepen.s} arb8 V1 {0 0 0} V2 {-166.3083958664467161270295 -67.15610201701679216057528 0} V3 {-166.3083958664467161270295 -67.15610201701677794972056 214.8175999999999135070539} V4 {-1.578905978938171909047631E-16 1.426081241349886421227616E-14 214.8175999999999419287633} V5 {-166.659954164212450677951 67.12896928889989567323937 0} V6 {-166.659954164212450677951 67.12896928889989567323937 0} V7 {-166.659954164212450677951 67.12896928889990988409409 214.8175999999999987721822} V8 {-166.659954164212450677951 67.12896928889990988409409 214.8175999999999987721822}
|
||||
put {keret.r} comb region yes tree {- {u {u {u {u {u {u {u {u {u {n {l keretgyura.s} {l kereteehb.s}} {l kereteehbkicsi.s}} {n {l keretgyura.s} {l kereteehj.s}}} {l kereteehjkicsi.s}} {n {l keretgyurf.s} {l kereteehb.s}}} {l kereteehbkicsi.s}} {n {l keretgyurf.s} {l kereteehj.s}}} {l kereteehjkicsi.s}} {n {l keretgyura.s} {l keretszelokozepen.s}}} {- {n {l keretgyurf.s} {l keretszelokozepen.s}} {l uveglap.r}}} {l uveglap.r}}
|
||||
attr set {keret.r} {color} {255/240/120} {shader} {plastic} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {kartonszelok.s} arb8 V1 {0 0 0} V2 {-168.0589500000000384716259 -71.77879269107120308035519 0} V3 {-168.0589500000000384716259 -71.77879269107113202608161 224.0785999999999660303729} V4 {-1.631395896368632521173223E-29 1.592174214692930869044001E-14 224.0786000000000228737917} V5 {-168.0589500000001237367542 71.77879269107125992377405 0} V6 {-168.0589500000001237367542 71.77879269107125992377405 0} V7 {-168.0589500000001237367542 71.77879269107127413462877 224.0786000000000797172106} V8 {-168.0589500000001237367542 71.77879269107127413462877 224.0786000000000797172106}
|
||||
put {kartonszelob.s} arb8 V1 {0 0 0} V2 {-166.4836399999998661769496 -63.37119199999997221084413 0} V3 {-166.4836399999998661769496 -63.37119199999995799998942 214.8175999999999135070539} V4 {-1.757644366536248560321584E-29 1.526370851934186986541124E-14 214.8175999999999419287633} V5 {-166.4836399999998661769496 63.37119199999997221084413 0} V6 {-166.4836399999998661769496 63.37119199999997221084413 0} V7 {-166.4836399999998661769496 63.37119199999999352712621 214.8175999999999987721822} V8 {-166.4836399999998661769496 63.37119199999999352712621 214.8175999999999987721822}
|
||||
put {kartongmbfk.s} ell V {-161.2951809999994736699591 9.876155174676486577133334E-15 180.0822759999995525959093} A {7.347638122934263549268508E-16 12 0} B {-12 7.347638122934263549268508E-16 0} C {0 0 12}
|
||||
put {kartongmbaj.s} ell V {-148.5169369999997002196324 -63.37174099999977983088684 19.92848799999995890175342} A {7.347638122934263549268508E-16 12 0} B {-12 7.347638122934263549268508E-16 0} C {0 0 12}
|
||||
put {kartongmbab.s} ell V {-147.9239789999987806368154 63.24422300000000518593879 20.08229800000001219473234} A {7.347638122934263549268508E-16 12 0} B {-12 7.347638122934263549268508E-16 0} C {0 0 12}
|
||||
+63
-25513
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,36 +0,0 @@
|
||||
title {Sample geometry with a radial gridlines and a shadow-casting light}
|
||||
units m
|
||||
put {cylinder.r} comb region yes tree {- {- {- {- {- {l c1.tgc} {l c1i.tgc}} {l c1c1.arb8}} {l c1c2.arb8}} {l c1c3.tgc}} {l c1c4.tgc}}
|
||||
attr set {cylinder.r} {region} {R} {region_id} {1003} {material_id} {1} {los} {100}
|
||||
put {50m_ring.s} tor V {0 0 0} H {6.12323399573676603586882E-17 0 -1} r_a 50000 r_h 100
|
||||
put {40m_ring.s} tor V {0 0 0} H {6.12323399573676603586882E-17 0 -1} r_a 40000 r_h 100
|
||||
put {30m_ring.s} tor V {0 0 0} H {6.12323399573676603586882E-17 0 -1} r_a 30000 r_h 100
|
||||
put {20m_ring.s} tor V {0 0 0} H {6.12323399573676603586882E-17 0 -1} r_a 20000 r_h 100
|
||||
put {10m_ring.s} tor V {0 0 0} H {6.12323399573676603586882E-17 0 -1} r_a 10000 r_h 100
|
||||
put {c1c2.arb8} arb8 V1 {-1449.999999999999545252649 -99.99999999999998578914528 0} V2 {-1449.999999999999545252649 100 0} V3 {-1449.999999999999545252649 100 1900} V4 {-1449.999999999999545252649 -99.99999999999998578914528 1900} V5 {-449.9999999999999431565811 -99.99999999999998578914528 0} V6 {-449.9999999999999431565811 100 0} V7 {-449.9999999999999431565811 100 1900} V8 {-449.9999999999999431565811 -99.99999999999998578914528 1900}
|
||||
put {c1c1.arb8} arb8 V1 {1450 -500 1250} V2 {1450 500 1250} V3 {1450 500 1750} V4 {1450 -500 1750} V5 {450 -500 1250} V6 {450 500 1250} V7 {450 500 1750} V8 {450 -500 1750}
|
||||
put {ground.s} arb8 V1 {60000.00000000002182787284 -60000.00000000002182787284 -100} V2 {60000.00000000002182787284 60000.00000000002182787284 -100} V3 {60000.00000000002182787284 60000.00000000002182787284 0} V4 {60000.00000000002182787284 -60000.00000000002182787284 0} V5 {-60000.00000000001455191523 -60000.00000000002182787284 -100} V6 {-60000.00000000001455191523 60000.00000000002182787284 -100} V7 {-60000.00000000001455191523 60000.00000000002182787284 0} V8 {-60000.00000000001455191523 -60000.00000000002182787284 0}
|
||||
put {ground.r} comb region yes tree {l ground.s}
|
||||
attr set {ground.r} {region} {R} {region_id} {1000} {material_id} {1} {los} {100} {color} {0/255/0}
|
||||
put {c1c4.tgc} tgc V {-6.123233995736766242944808E-14 -500 1000} H {0 -1000 6.123233995736767505122256E-14} A {200 0 0} B {0 1.224646799147353374806706E-14 -200} C {200 0 0} D {0 1.224646799147353374806706E-14 -200}
|
||||
put {c1c3.tgc} tgc V {0 500 1500} H {0 1000 6.123233995736764980767359E-14} A {200 0 0} B {0 1.224646799147353374806706E-14 -200} C {200 0 0} D {0 1.224646799147353374806706E-14 -200}
|
||||
put {165deg.s} tgc V {53125.92044589875149540603 -14235.04748063865554286167 0} H {-106251.8408917975175427273 28470.09496127731472370215 6.735557395310443447840915E-12} A {-5.91458985689334876413324E-15 1.584809575715884060677382E-15 -100} B {-25.88190451025210236934981 -96.59258262890682544821175 0} C {-5.91458985689334876413324E-15 1.584809575715884060677382E-15 -100} D {-25.88190451025210236934981 -96.59258262890682544821175 0}
|
||||
put {135deg.s} tgc V {38890.87296526011050445959 -38890.8729652601177804172 0} H {-77781.74593052023556083441 77781.74593052025011274964 6.735557395310443447840915E-12} A {-4.329780281177466281177668E-15 4.329780281177467070038573E-15 -100} B {-70.71067811865475505328504 -70.71067811865474084243033 0} C {-4.329780281177466281177668E-15 4.329780281177467070038573E-15 -100} D {-70.71067811865475505328504 -70.71067811865474084243033 0}
|
||||
put {105deg.s} tgc V {14235.04748063864644791465 -53125.92044589875877136365 0} H {-28470.09496127729653380811 106251.8408917975320946425 6.735557395310443447840915E-12} A {-1.58480957571588307460125E-15 5.914589856893349552994145E-15 -100} B {-96.59258262890682544821175 -25.88190451025208460578142 0} C {-1.58480957571588307460125E-15 5.914589856893349552994145E-15 -100} D {-96.59258262890682544821175 -25.88190451025208460578142 0}
|
||||
put {150deg.s} tgc V {47631.39720814413158223033 -27499.99999999999636202119 0} H {-95262.79441628826316446066 55000 6.735557395310443447840915E-12} A {-5.302876193624534820650073E-15 3.061616997868382648155861E-15 -100} B {-49.99999999999999289457264 -86.60254037844387653422018 0} C {-5.302876193624534820650073E-15 3.061616997868382648155861E-15 -100} D {-49.99999999999999289457264 -86.60254037844387653422018 0}
|
||||
put {120deg.s} tgc V {27499.99999999998908606358 -47631.39720814413158223033 0} H {-54999.99999999998544808477 95262.79441628826316446066 6.735557395310443447840915E-12} A {-3.061616997868381859294956E-15 5.302876193624534820650073E-15 -100} B {-86.60254037844387653422018 -49.99999999999997868371793 0} C {-3.061616997868381859294956E-15 5.302876193624534820650073E-15 -100} D {-86.60254037844387653422018 -49.99999999999997868371793 0}
|
||||
put {light.s} ell V {0 0 1500} A {10 0 0} B {0 10 0} C {0 0 10}
|
||||
put {light.r} comb region yes tree {l light.s}
|
||||
attr set {light.r} {oshader} {light {f 10 s 32 v 0}} {region} {R} {shader} {light {f 10.0 s 32 v 0}} {region_id} {1002} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {c1i.tgc} tgc V {0 0 0} H {0 0 1900} A {900 0 0} B {0 900 0} C {900 0 0} D {0 900 0}
|
||||
put {75deg.s} tgc V {-14235.04748063864099094644 -53125.92044589875877136365 0} H {28470.09496127728561987169 106251.8408917975320946425 6.735557395310443447840915E-12} A {1.584809575715882482955572E-15 5.914589856893349552994145E-15 -100} B {-96.59258262890682544821175 25.88190451025207394764038 0} C {1.584809575715882482955572E-15 5.914589856893349552994145E-15 -100} D {-96.59258262890682544821175 25.88190451025207394764038 0}
|
||||
put {45deg.s} tgc V {-38890.8729652601177804172 -38890.8729652601177804172 0} H {77781.74593052025011274964 77781.74593052025011274964 6.735557395310443447840915E-12} A {4.329780281177467070038573E-15 4.329780281177467070038573E-15 -100} B {-70.71067811865475505328504 70.71067811865475505328504 0} C {4.329780281177467070038573E-15 4.329780281177467070038573E-15 -100} D {-70.71067811865475505328504 70.71067811865475505328504 0}
|
||||
put {15deg.s} tgc V {-53125.92044589875877136365 -14235.04748063864099094644 0} H {106251.8408917975320946425 28470.09496127728561987169 6.735557395310443447840915E-12} A {5.914589856893349552994145E-15 1.584809575715882482955572E-15 -100} B {-25.88190451025207394764038 96.59258262890682544821175 0} C {5.914589856893349552994145E-15 1.584809575715882482955572E-15 -100} D {-25.88190451025207394764038 96.59258262890682544821175 0}
|
||||
put {90deg.s} tgc V {-3.367778697655221320023674E-12 -55000 0} H {6.735557395310443447840915E-12 110000.0000000000145519152 6.735557395310443447840915E-12} A {3.749399456654643800636173E-31 6.123233995736766085172627E-15 -100} B {-100 6.123233995736766085172627E-15 0} C {3.749399456654643800636173E-31 6.123233995736766085172627E-15 -100} D {-100 6.123233995736766085172627E-15 0}
|
||||
put {60deg.s} tgc V {-27500.00000000000727595761 -47631.39720814412430627272 0} H {55000.00000000002182787284 95262.79441628826316446066 6.735557395310443447840915E-12} A {3.061616997868383437016766E-15 5.302876193624534031789167E-15 -100} B {-86.60254037844386232336547 50.00000000000001421085472 0} C {3.061616997868383437016766E-15 5.302876193624534031789167E-15 -100} D {-86.60254037844386232336547 50.00000000000001421085472 0}
|
||||
put {30deg.s} tgc V {-47631.39720814413158223033 -27499.99999999999636202119 0} H {95262.79441628826316446066 55000 6.735557395310443447840915E-12} A {5.302876193624534820650073E-15 3.061616997868382253725408E-15 -100} B {-49.99999999999999289457264 86.60254037844387653422018 0} C {5.302876193624534820650073E-15 3.061616997868382253725408E-15 -100} D {-49.99999999999999289457264 86.60254037844387653422018 0}
|
||||
put {grid.r} comb region yes tree {u {u {u {u {u {l 50m_ring.s} {l 40m_ring.s}} {u {l 30m_ring.s} {l 20m_ring.s}}} {u {u {l 10m_ring.s} {l 0deg.s}} {u {l 15deg.s} {l 30deg.s}}}} {u {u {u {l 45deg.s} {l 60deg.s}} {u {l 75deg.s} {l 90deg.s}}} {u {u {l 105deg.s} {l 120deg.s}} {u {l 135deg.s} {l 150deg.s}}}}} {l 165deg.s}}
|
||||
attr set {grid.r} {region} {R} {shader} {plastic} {region_id} {1001} {material_id} {1} {los} {100} {color} {255/255/255}
|
||||
put {c1.tgc} tgc V {0 0 0} H {0 0 2000} A {1000 0 0} B {0 1000 0} C {1000 0 0} D {0 1000 0}
|
||||
put {0deg.s} tgc V {-55000 0 0} H {110000.0000000000145519152 0 6.735557395310443447840915E-12} A {6.123233995736766085172627E-15 0 -100} B {0 100 0} C {6.123233995736766085172627E-15 0 -100} D {0 100 0}
|
||||
put {all.g} comb region no tree {u {u {u {- {l ground.r} {l grid.r}} {- {l grid.r} {l c1.tgc}}} {l cylinder.r}} {l light.r}}
|
||||
File diff suppressed because one or more lines are too long
+2
-2
@@ -4,14 +4,14 @@ C Y ground.r 1000 0 1 0 1 100 0 0 0 0 1 1 0
|
||||
stack
|
||||
camo o=2 s=100000; turbump s=20000; plastic sp=.1 di=.7
|
||||
M u terra.s 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0
|
||||
s dsp terra.no_sm file="terra.bin" sm=0 w=256 n=256 stom=100000,0,0,0,0,100000,0,0,0,0,25,0,0,0,0,1
|
||||
s dsp terra.no_sm file="terra.dsp" sm=0 w=256 n=256 stom=100000,0,0,0,0,100000,0,0,0,0,25,0,0,0,0,1
|
||||
S 20 water.s 0 2.560000000000e+07 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 2.560000000000e+07 0.000000000000e+00 0.000000000000e+00 2.560000000000e+07 1.187252625000e+06 0.000000000000e+00 0.000000000000e+00 1.187252625000e+06 -2.560000000000e+07 0.000000000000e+00 0.000000000000e+00 -2.560000000000e+07 2.560000000000e+07 0.000000000000e+00 -2.560000000000e+07 2.560000000000e+07 1.187252625000e+06 -2.560000000000e+07 0.000000000000e+00 1.187252625000e+06
|
||||
C Y water.r 1001 0 2 0 1 100 1 114 147 163 1 1 0
|
||||
stack
|
||||
turbump s=100000; glass tr=0 re=0.4
|
||||
M u water.s 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0
|
||||
M - terra.s 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0
|
||||
s dsp terra.s file="terra.bin" sm=1 w=256 n=256 stom=100000,0,0,0,0,100000,0,0,0,0,25,0,0,0,0,1
|
||||
s dsp terra.s file="terra.dsp" sm=1 w=256 n=256 stom=100000,0,0,0,0,100000,0,0,0,0,25,0,0,0,0,1
|
||||
S 19 light.s 0 3.869340800000e+07 5.792957000000e+06 1.000000000000e+07 1.000000000000e+06 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+06 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+06 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00
|
||||
C Y light.r 1002 0 1 0 1 100 1 250 253 191 1 0 0
|
||||
light
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
# Make sure the converter executable exists
|
||||
string(REPLACE "\\" "" CONV_EXEC "${EXEC}")
|
||||
if(NOT EXISTS "${CONV_EXEC}")
|
||||
message(FATAL_ERROR "Invalid geometry converter executable specified: ${CONV_EXEC}")
|
||||
endif(NOT EXISTS "${CONV_EXEC}")
|
||||
|
||||
# Use local cache directories for the conversion
|
||||
set(CBDIR "@CMAKE_CURRENT_BINARY_DIR@")
|
||||
set(CSDIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||
set(BU_DIR_CACHE ${CBDIR}/cache_@in_model_root@)
|
||||
set(LIBRT_CACHE ${CBDIR}/rtcache_@in_model_root@)
|
||||
set(ENV{BU_DIR_CACHE} ${BU_DIR_CACHE})
|
||||
set(ENV{LIBRT_CACHE} ${LIBRT_CACHE})
|
||||
file(REMOVE_RECURSE "${BU_DIR_CACHE}")
|
||||
file(REMOVE_RECURSE "${LIBRT_CACHE}")
|
||||
file(MAKE_DIRECTORY "${BU_DIR_CACHE}")
|
||||
file(MAKE_DIRECTORY "${LIBRT_CACHE}")
|
||||
|
||||
# Deduce the current BRLCAD_ROOT value from the conversion executable path.
|
||||
# Setting BRLCAD_ROOT is the hammer that makes certain we are running things
|
||||
# found in the build directory.
|
||||
get_filename_component(CEDIR "${CONV_EXEC}" DIRECTORY)
|
||||
set(BIN_DIR "@BIN_DIR@")
|
||||
string(REGEX REPLACE "${BIN_DIR}$" "" CROOT "${CEDIR}")
|
||||
file(TO_CMAKE_PATH "${CROOT}" CROOT)
|
||||
string(REGEX REPLACE "/$" "" CROOT "${CROOT}")
|
||||
set(ENV{BRLCAD_ROOT} "${CROOT}")
|
||||
|
||||
# Now that we know the root, finalize the full path output file location and
|
||||
# run the conversion.
|
||||
execute_process(
|
||||
COMMAND "${CONV_EXEC}" @CONV_ARGS@
|
||||
RESULT_VARIABLE conv_result
|
||||
OUTPUT_VARIABLE conv_log
|
||||
ERROR_VARIABLE conv_log
|
||||
)
|
||||
|
||||
set(conv_success_codes "@CONV_SUCCESS_CODES@")
|
||||
list(FIND conv_success_codes "${conv_result}" conv_result_index)
|
||||
if(conv_result_index EQUAL -1 OR NOT EXISTS "@CONV_OUTPUT_PATH@")
|
||||
set(CARGS @CONV_ARGS@)
|
||||
message(FATAL_ERROR "[@in_model_root@] Failure: ${conv_result}\n${CONV_EXEC} ${CARGS}\"\n\n${conv_log}")
|
||||
endif()
|
||||
|
||||
# Cleanup
|
||||
execute_process(
|
||||
COMMAND "@CMAKE_COMMAND@" -E rm -rf ${BU_DIR_CACHE}
|
||||
)
|
||||
execute_process(
|
||||
COMMAND "@CMAKE_COMMAND@" -E rm -rf ${LIBRT_CACHE}
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -1,27 +0,0 @@
|
||||
# Make sure the converter executable exists.
|
||||
string(REPLACE "\\" "" CONV_EXEC "${EXEC}")
|
||||
if(NOT EXISTS "${CONV_EXEC}")
|
||||
message(FATAL_ERROR "Invalid pix converter executable specified: ${CONV_EXEC}")
|
||||
endif(NOT EXISTS "${CONV_EXEC}")
|
||||
|
||||
set(IN_FILE "@PIX_INPUT@")
|
||||
set(OUT_FILE "@PIX_OUTPUT@")
|
||||
set(CONV_LABEL "@PIX_LABEL@")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CONV_EXEC}" "${IN_FILE}"
|
||||
RESULT_VARIABLE conv_result
|
||||
OUTPUT_FILE "${OUT_FILE}"
|
||||
ERROR_VARIABLE conv_log
|
||||
)
|
||||
|
||||
if(conv_result)
|
||||
message(FATAL_ERROR "[${CONV_LABEL}] Failure: ${conv_result}\n${CONV_EXEC} ${IN_FILE} > ${OUT_FILE}\n\n${conv_log}")
|
||||
endif(conv_result)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
-184496
File diff suppressed because it is too large
Load Diff
@@ -1,89 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Ensure /bin/sh
|
||||
export PATH || (echo "This isn't sh."; sh $0 $*; kill $$)
|
||||
path_to_this="`dirname $0`"
|
||||
LC_ALL=C
|
||||
|
||||
echo Looking for RT...
|
||||
# find the raytracer
|
||||
# RT environment variable overrides
|
||||
if test "x${RT}" = "x" ; then
|
||||
# see if we find the rt binary
|
||||
if test -x "$path_to_this/../src/rt/rt" ; then
|
||||
echo ...found $path_to_this/../src/rt/rt
|
||||
RT="$path_to_this/../src/rt/rt"
|
||||
elif test -x "$path_to_this/rt" ; then
|
||||
echo ...found $path_to_this/rt
|
||||
RT="$path_to_this/rt"
|
||||
elif test -x "$path_to_this/../bin/rt" ; then
|
||||
echo ...found $path_to_this/../bin/rt
|
||||
RT="$path_to_this/../bin/rt"
|
||||
elif test -x "$path_to_this/../build/bin/rt" ; then
|
||||
echo ...found $path_to_this/../build/bin/rt
|
||||
RT="$path_to_this/../build/bin/rt"
|
||||
elif test -x "/usr/brlcad/bin/rt" ; then
|
||||
echo ...found /usr/brlcad/bin/rt
|
||||
RT="/usr/brlcad/bin/rt"
|
||||
fi
|
||||
else
|
||||
echo ...using $RT from RT environment variable setting
|
||||
fi
|
||||
|
||||
echo Looking for DB...
|
||||
# find the geometry directory
|
||||
# DB environment variable overrides
|
||||
if test "x${DB}" = "x" ; then
|
||||
# see if we find the db dir
|
||||
if test -d "$path_to_this/../build/share/db" ; then
|
||||
echo ...found $path_to_this/../build/share/db
|
||||
DB="$path_to_this/../build/share/db"
|
||||
elif test -d "$path_to_this/../db" ; then
|
||||
echo ...found $path_to_this/../db
|
||||
DB="$path_to_this/../db"
|
||||
elif test -d "$path_to_this/db" ; then
|
||||
echo ...found $path_to_this/db
|
||||
DB="$path_to_this/db"
|
||||
fi
|
||||
else
|
||||
echo ...using $DB from DB environment variable setting
|
||||
fi
|
||||
|
||||
# print results or choke
|
||||
if test "x${RT}" = "x" ; then
|
||||
echo "ERROR: Could not find the BRL-CAD raytracer"
|
||||
exit 1
|
||||
else
|
||||
echo "Using [$RT] for RT"
|
||||
fi
|
||||
if test "x${DB}" = "x" ; then
|
||||
echo "ERROR: Could not find the BRL-CAD database directory"
|
||||
exit 1
|
||||
else
|
||||
echo "Using [$DB] for DB"
|
||||
fi
|
||||
|
||||
if test -f traffic_light.png ; then mv traffic_light.png traffic_light.png.$$ ; fi
|
||||
if test -f traffic_light.log ; then mv traffic_light.log traffic_light.log.$$ ; fi
|
||||
|
||||
echo "Ray-tracing to file: traffic_light.png"
|
||||
|
||||
$RT -M -s1024 $*\
|
||||
-o traffic_light.png\
|
||||
${DB}/traffic_light.g\
|
||||
'scene.c' \
|
||||
2> traffic_light.log\
|
||||
<<EOF
|
||||
viewsize 1.60626398444471e+03;
|
||||
orientation 5.25794963790780e-01 4.41938505076552e-01 4.69062489119843e-01 5.55166997473420e-01;
|
||||
eye_pt 3.17305150328335e+04 -5.45678517872137e+03 5.82070858116997e+03;
|
||||
start 0; clean;
|
||||
end;
|
||||
|
||||
EOF
|
||||
|
||||
if test x$? != x0 ; then
|
||||
echo "ERROR: Ray-trace failed."
|
||||
fi
|
||||
|
||||
echo "Done. See traffic_light.log for details."
|
||||
Binary file not shown.
+3
-94
@@ -645,7 +645,7 @@
|
||||
volume = {Proceedings SPIE, 1098},
|
||||
pages = {42-54},
|
||||
year = {1989},
|
||||
url = {http://dx.doi.org/10.1117/12.960423},
|
||||
url = { http://dx.doi.org/10.1117/12.960423},
|
||||
owner = {morrison},
|
||||
timestamp = {2008.02.05}
|
||||
}
|
||||
@@ -1298,7 +1298,7 @@
|
||||
|
||||
@TECHREPORT{Ross92,
|
||||
author = {Ross, Adam},
|
||||
title = {3D Geometric Target Analysis of The Advanced Field Artillery System (AFAS)},
|
||||
title = {3D Geometric Target Analysis of The Advanced Field Artillary System (AFAS)},
|
||||
year = {1992},
|
||||
month = aug,
|
||||
publisher = {The U.S. Army Ballistic Research Laboratory},
|
||||
@@ -1847,21 +1847,6 @@
|
||||
timestamp = {2008.02.07}
|
||||
}
|
||||
|
||||
@INPROCEEDINGS{Moulton02a,
|
||||
author = {Moulton, Jr., Russ and Fink, Christopher E.},
|
||||
title = {Ray-tracing approach for realistic hyperspectral forest canopies},
|
||||
booktitle = {Targets and Backgrounds VIII: Characterization and Representation, Proceedings of SPIE},
|
||||
volume = {4178},
|
||||
pages = {46-64},
|
||||
year = {2002},
|
||||
month = aug,
|
||||
doi = {10.1117/12.478828},
|
||||
location = {Orlando, FL, United States},
|
||||
note = {Society of Photo-Optical Instrumentation Engineers (SPIE). Presented at AeroSense 2002.},
|
||||
owner = {morrison},
|
||||
timestamp = {2022.01.10}
|
||||
}
|
||||
|
||||
@ARTICLE{Mathy03a,
|
||||
author = {Mathy, F. and Guillemaud, R. and Picone, M.},
|
||||
title = {Experimental validation of a coupled photon Monte Carlo and CAD software},
|
||||
@@ -1887,7 +1872,7 @@
|
||||
pages = {175-193},
|
||||
number = {2},
|
||||
month = feb,
|
||||
eid = {10.1016/S0010-4485(03)00060-5},
|
||||
eid = {10.1016/S0010-4485(03)00060-5 },
|
||||
owner = {cyapp},
|
||||
timestamp = {2008.02.08}
|
||||
}
|
||||
@@ -2261,82 +2246,6 @@
|
||||
timestamp = {2018.06.06}
|
||||
}
|
||||
|
||||
@TECHREPORT{Dean18a,
|
||||
author = {Dean, Allen and Thomas, Jr., John},
|
||||
title = {Development of Large and Small Missile Target Models},
|
||||
institution = {United States Air Force Research Laboratory, Munitions Directorate},
|
||||
year = {2018},
|
||||
month = dec,
|
||||
number = {AFRL-RW-EG-TR-2018-100},
|
||||
address = {Air Force Research Laboratory, Eglin Air Force Base, FL 32542-6810},
|
||||
note = {Distribution authorized to Department of Defense and U.S. DoD contractors only; critical technology; distribution limitations applied November 2018. Other requests must be referred to AFRL/RWML, Eglin AFB FL 32542-5910.},
|
||||
owner = {morrison},
|
||||
timestamp = {2020.10.30}
|
||||
}
|
||||
|
||||
@TECHREPORT{Velykodniy19a,
|
||||
author = {Velykodniy, Stanislav and Burlachenko, Zh and Zaitseva-Velykodna, Svitlana},
|
||||
title = {Graphic Databases Reengineering in BRL-CAD Open Source Computer-aided Design Environment. Modeling of the Structural Part},
|
||||
institution = {Odessa State Environmental University},
|
||||
year = {2019},
|
||||
month = {06},
|
||||
pages = {130-139},
|
||||
doi = {10.30929/1995-0519.2019.3.130-139},
|
||||
note = {Ukrainian title: РЕИНЖИНИРИНГ ГРАФИЧЕСКИХ БАЗ ДАННЫХ В СРЕДЕ ОТКРЫТОЙ СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ BRL-CAD. МОДЕЛИРОВАНИЕ СТРУКТУРНОЙ ЧАСТИ},
|
||||
owner = {morrison},
|
||||
timestamp = {2021.10.02}
|
||||
}
|
||||
|
||||
@ARTICLE{Velykodniy19b,
|
||||
author = {Velykodniy, Stanislav Sergeyevich},
|
||||
title = {ANALYSIS AND SYNTHESIS OF THE RESULTS OF COMPLEX EXPERIMENTAL RESEARCH ON REENGINEERING OF OPEN CAD SYSTEMS},
|
||||
journal = {Applied Aspects of Information Technology},
|
||||
institution = {Ministry of Education and Science of Ukraine, Odessa National Polytechnic University},
|
||||
year = {2019},
|
||||
month = {06},
|
||||
pages = {186-205},
|
||||
volume = {2}
|
||||
number = {3},
|
||||
issn = {2617-4316},
|
||||
doi = {10.15276/aait.03.2019.2},
|
||||
address = {Odessa National Polytechnic University 1, Shevchenko Avenue 65044, Odessa, Ukraine},
|
||||
note = {Web Site: https://aait.opu.ua},
|
||||
owner = {morrison},
|
||||
timestamp = {2021.10.02}
|
||||
}
|
||||
|
||||
@ARTICLE{Velykodniy19c,
|
||||
author = {Velykodniy, Stanislav Sergeyevich},
|
||||
title = {Reengineering of Open Software System of 3D Modeling BRL-CAD},
|
||||
journal = {Innovative Technologies and Scientific Solutions for Industries},
|
||||
institution = {Kharkov National University of Radio Electronics, State Enterprise "Southern National Design & Research Institute of Aerospace Industries"},
|
||||
year = {2019},
|
||||
month = sep,
|
||||
day = {23},
|
||||
pages = {62-71},
|
||||
number = {3 (9)},
|
||||
issn = {2522-9818},
|
||||
doi = {10.30837/2522-9818.2019.9.062},
|
||||
url = {https://itssi-journal.com/index.php/ittsi/article/view/145},
|
||||
address = {Ukraine, 61166, Kharkiv, Nauka Ave, 14},
|
||||
note = {Affiliation: Odessa State Environmental University. Information site: http://itssi-journal.com},
|
||||
owner = {morrison},
|
||||
timestamp = {2021.10.02}
|
||||
}
|
||||
|
||||
@TECHREPORT{Yapp20,
|
||||
author = {Yapp, Cliff},
|
||||
title = {Methodology Improvements to Non-Uniform Rational B-Splines (NURBS) Geometry Conversion in BRL-CAD},
|
||||
institution = {United States Army, Data and Analysis Center},
|
||||
year = {2020},
|
||||
month = mar,
|
||||
number = {CCDC DAC-TR-2020-021, JASPO-V-19-03-001},
|
||||
address = {Data and Analysis Center, Aberdeen Proving Ground, MD 21005-5068},
|
||||
note = {Approved for Public Release, distribution unlimited.},
|
||||
owner = {morrison},
|
||||
timestamp = {2021.08.05}
|
||||
}
|
||||
|
||||
@comment{jabref-meta: selector_journal:}
|
||||
|
||||
@comment{jabref-meta: selector_author:}
|
||||
|
||||
+78
-102
@@ -1,41 +1,51 @@
|
||||
verbose_add_subdirectory(doc asciidoc)
|
||||
verbose_add_subdirectory(doc changes)
|
||||
verbose_add_subdirectory(doc docbook)
|
||||
verbose_add_subdirectory(doc html)
|
||||
verbose_add_subdirectory(doc legal)
|
||||
|
||||
set(
|
||||
documentation_DATA
|
||||
BRL-CAD.bib
|
||||
GITHUB
|
||||
CMAKEFILES(
|
||||
parsers/bison_to_lemon.txt
|
||||
parsers/flex_to_re2c.txt
|
||||
parsers/templates/CMakeLists.txt
|
||||
parsers/templates/main.c
|
||||
parsers/templates/main.h
|
||||
parsers/templates/parser.lemon
|
||||
parsers/templates/scanner.perplex
|
||||
parsers/writing_perplex_lemon_parsers.txt
|
||||
)
|
||||
|
||||
set(documentation_DATA
|
||||
IDEAS
|
||||
PROJECTS
|
||||
README.AIX
|
||||
README.BSD
|
||||
README.IRIX
|
||||
README.Linux
|
||||
README.MacOSX
|
||||
README.Solaris
|
||||
README.VAX
|
||||
README.Windows
|
||||
README.BSD
|
||||
TODO.BREP
|
||||
TODO.shaded_displays
|
||||
archer_ack.txt
|
||||
benchmark.tr
|
||||
bu_opt_design_notes.txt
|
||||
brep.txt
|
||||
BRL-CAD.bib
|
||||
checklist.txt
|
||||
cvs.txt
|
||||
description.txt
|
||||
optimization_ideas.adoc
|
||||
notes/TODO.BREP
|
||||
notes/TODO.shaded_displays
|
||||
notes/apitrace.txt
|
||||
notes/brep.txt
|
||||
notes/bu_opt_design_notes.txt
|
||||
notes/cvs.txt
|
||||
notes/debugging_example.txt
|
||||
notes/debugging_notes.txt
|
||||
notes/editors.txt
|
||||
notes/history.txt
|
||||
notes/hypot.txt
|
||||
notes/itcl4_migration.txt
|
||||
notes/mater.txt
|
||||
notes/matrix.txt
|
||||
editors.txt
|
||||
ged.tr
|
||||
history.txt
|
||||
hypot.txt
|
||||
irprep.tr
|
||||
mater.txt
|
||||
matrix.txt
|
||||
pre_BRL-CAD.bib
|
||||
)
|
||||
add_doc(documentation_DATA ".")
|
||||
)
|
||||
ADD_DOC(documentation_DATA ".")
|
||||
|
||||
set(
|
||||
documentation_mged_old_DATA
|
||||
set(documentation_mged_old_DATA
|
||||
mged/a.tex
|
||||
mged/adc.ps
|
||||
mged/all.tex
|
||||
@@ -200,91 +210,57 @@ set(
|
||||
mged/wm-leg1.ps
|
||||
mged/wm-prims.ps
|
||||
mged/wm-tube.ps
|
||||
notes/ecosystem.dot
|
||||
notes/regions.txt
|
||||
notes/rounding.txt
|
||||
notes/tool_categories.txt
|
||||
mk.tr
|
||||
old-mged.tr
|
||||
)
|
||||
add_doc(documentation_mged_old_DATA mged_old REQUIRED "mged")
|
||||
pkg.tr
|
||||
regions.txt
|
||||
rounding.txt
|
||||
tool_categories.txt
|
||||
ecosystem.dot
|
||||
)
|
||||
ADD_DOC(documentation_mged_old_DATA mged_old)
|
||||
|
||||
if(TARGET mged)
|
||||
configure_file(pad_file.xml.in "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" @ONLY)
|
||||
distclean("${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" DESTINATION ${DOC_DIR})
|
||||
endif(TARGET mged)
|
||||
configure_file(pad_file.xml.in "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" DESTINATION ${DOC_DIR})
|
||||
|
||||
cmakefiles(
|
||||
CMAKEFILES(
|
||||
CMakeLists.txt
|
||||
README.Solaris
|
||||
README.VAX
|
||||
README.adoc
|
||||
README.OSCON-2014
|
||||
STARTERS
|
||||
STRATEGY
|
||||
git/bisect.txt
|
||||
git/check.yml
|
||||
git/diffing.txt
|
||||
git/git2gource.cpp
|
||||
git/gitconfig
|
||||
git/gitk
|
||||
git/gitstats.txt
|
||||
git/gource.sh
|
||||
git/gource.txt
|
||||
git/history.txt
|
||||
git/merging.txt
|
||||
git/mime_types.txt
|
||||
git/usability.txt
|
||||
inventory.adoc
|
||||
notes/bsd_semaphore_bug.txt
|
||||
notes/cmake_paths/CMakeLists.txt
|
||||
notes/cmake_paths/README.txt
|
||||
notes/cmake_paths/dir_info.c
|
||||
notes/cmake_paths/test.cmake.in
|
||||
notes/cmake_vars.txt
|
||||
notes/csv_to_comgeom.txt
|
||||
notes/implicit_constraints.txt
|
||||
notes/lcov.txt
|
||||
notes/struct_resource_removal.txt
|
||||
cmake_vars.txt
|
||||
csv_to_comgeom.txt
|
||||
implicit_constraints.txt
|
||||
lcov.txt
|
||||
pad_file.xml.in
|
||||
)
|
||||
trunk_hierarchy.org
|
||||
)
|
||||
|
||||
# Generic C/C++ examples
|
||||
cmakefiles(
|
||||
notes/c_cxx_patterns/01_basic_C/CMakeLists.txt
|
||||
notes/c_cxx_patterns/01_basic_C/main.c
|
||||
notes/c_cxx_patterns/01_basic_C/nlib.c
|
||||
notes/c_cxx_patterns/01_basic_C/nlib.h
|
||||
notes/c_cxx_patterns/02_hidden_C/CMakeLists.txt
|
||||
notes/c_cxx_patterns/02_hidden_C/main.c
|
||||
notes/c_cxx_patterns/02_hidden_C/nlib.c
|
||||
notes/c_cxx_patterns/02_hidden_C/nlib.h
|
||||
notes/c_cxx_patterns/03_PImpl_C/CMakeLists.txt
|
||||
notes/c_cxx_patterns/03_PImpl_C/main.c
|
||||
notes/c_cxx_patterns/03_PImpl_C/nlib.c
|
||||
notes/c_cxx_patterns/03_PImpl_C/nlib.h
|
||||
notes/c_cxx_patterns/04_hidden_CXX/CMakeLists.txt
|
||||
notes/c_cxx_patterns/04_hidden_CXX/main.c
|
||||
notes/c_cxx_patterns/04_hidden_CXX/nlib.cxx
|
||||
notes/c_cxx_patterns/04_hidden_CXX/nlib.h
|
||||
notes/c_cxx_patterns/05_PImpl_CXX/CMakeLists.txt
|
||||
notes/c_cxx_patterns/05_PImpl_CXX/main.c
|
||||
notes/c_cxx_patterns/05_PImpl_CXX/nlib.cxx
|
||||
notes/c_cxx_patterns/05_PImpl_CXX/nlib.h
|
||||
notes/c_cxx_patterns/CMakeLists.txt
|
||||
notes/c_cxx_patterns/README
|
||||
)
|
||||
|
||||
# Notes about parser generators
|
||||
cmakefiles(
|
||||
notes/parsers/bison_to_lemon.txt
|
||||
notes/parsers/flex_to_re2c.txt
|
||||
notes/parsers/templates/CMakeLists.txt
|
||||
notes/parsers/templates/main.c
|
||||
notes/parsers/templates/main.h
|
||||
notes/parsers/templates/parser.lemon
|
||||
notes/parsers/templates/scanner.perplex
|
||||
notes/parsers/writing_perplex_lemon_parsers.txt
|
||||
)
|
||||
CMAKEFILES(
|
||||
c_cxx_patterns/01_basic_C/CMakeLists.txt
|
||||
c_cxx_patterns/01_basic_C/main.c
|
||||
c_cxx_patterns/01_basic_C/nlib.c
|
||||
c_cxx_patterns/01_basic_C/nlib.h
|
||||
c_cxx_patterns/02_hidden_C/CMakeLists.txt
|
||||
c_cxx_patterns/02_hidden_C/main.c
|
||||
c_cxx_patterns/02_hidden_C/nlib.c
|
||||
c_cxx_patterns/02_hidden_C/nlib.h
|
||||
c_cxx_patterns/03_PImpl_C/CMakeLists.txt
|
||||
c_cxx_patterns/03_PImpl_C/main.c
|
||||
c_cxx_patterns/03_PImpl_C/nlib.c
|
||||
c_cxx_patterns/03_PImpl_C/nlib.h
|
||||
c_cxx_patterns/04_hidden_CXX/CMakeLists.txt
|
||||
c_cxx_patterns/04_hidden_CXX/main.c
|
||||
c_cxx_patterns/04_hidden_CXX/nlib.cxx
|
||||
c_cxx_patterns/04_hidden_CXX/nlib.h
|
||||
c_cxx_patterns/05_PImpl_CXX/CMakeLists.txt
|
||||
c_cxx_patterns/05_PImpl_CXX/main.c
|
||||
c_cxx_patterns/05_PImpl_CXX/nlib.cxx
|
||||
c_cxx_patterns/05_PImpl_CXX/nlib.h
|
||||
c_cxx_patterns/CMakeLists.txt
|
||||
c_cxx_patterns/README
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
-104
@@ -1,104 +0,0 @@
|
||||
BRL-CAD has migrated from the Sourceforge hosting solution
|
||||
(https://sf.net/projects/brlcad) to Github (https://github.com/BRL-CAD/brlcad).
|
||||
As with other large projects that have undertaken large scale hosting and VCS
|
||||
migration(1) the BRL-CAD project is adjusting to working in the new
|
||||
environment. The following notes are intended to capture practical tips and
|
||||
information related to working with BRL-CAD on the Github platform.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
For those wishing to direct Github emails to different addresses on a
|
||||
per-project basis, the following information may be useful:
|
||||
|
||||
https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#customizing-email-routes-per-organization
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Using Github Actions to iteratively debug problems.
|
||||
|
||||
Github's runners (build platforms for it's Actions CI system) offer a way to
|
||||
test platforms we don't otherwise have access to. Sometimes, if we need to
|
||||
iteratively test inputs being supplied to tools on those platforms to diagnose
|
||||
a problem, the full configure/build/test cycle can be a very slow way to
|
||||
proceed.
|
||||
|
||||
A way forward in this case is to create a temporary local repository with a
|
||||
checking of the binary version of BRL-CAD used for the specific platform in
|
||||
question, along with test inputs and an action defined to run the specific test
|
||||
in question. (REMEMBER - github repos are public, so only define and use inputs
|
||||
suitable for public consumption!)
|
||||
|
||||
For the below example, we created a repository with the Windows binary install
|
||||
and a README file explaining what the test is doing:
|
||||
|
||||
-rw-rw-r-- 1 user user 72 Sep 23 17:52 README
|
||||
drwxrwxr-x 3 user user 12288 Sep 24 07:41 bin
|
||||
drwxrwxr-x 4 user user 4096 Sep 23 17:49 libexec
|
||||
drwxrwxr-x 13 user user 4096 Sep 23 17:50 lib
|
||||
drwxrwxr-x 5 user user 4096 Sep 23 17:49 include
|
||||
drwxrwxr-x 16 user user 4096 Sep 23 17:50 share
|
||||
drwxrwxr-x 8 user user 4096 Sep 24 07:42 .git
|
||||
drwxrwxr-x 3 user user 4096 Sep 23 17:53 .github
|
||||
|
||||
Then, in the .github/workflows directory we create a .yml file to trigger the
|
||||
test whenever we push a change. For this example we were wanting to test the
|
||||
benchmark script, so we create a .github/workflows/benchmark.yml file with the
|
||||
following contents:
|
||||
|
||||
name: benchhmark
|
||||
on: [push]
|
||||
jobs:
|
||||
bench:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
# https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
|
||||
- run: echo '::add-path::{C:\Program Files\Git\bin}'
|
||||
- run: sh.exe ./bin/benchmark run
|
||||
|
||||
This allowed developers to iteratively adjust the bin/benchmark shell script
|
||||
and test the results in the compilation Windows environment, *without* having
|
||||
to perform the full compilation cycle on Windows each time. Once a working
|
||||
benchmark script was identified it was added back to the primary repository and
|
||||
the test repo deleted.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Debugging flags can be added to the actions environment for a given repo:
|
||||
|
||||
https://github.community/t/ci-access-to-shell-session/17250
|
||||
|
||||
(Note: the "Secrets" label is misleading in this particular case - that is
|
||||
the mechanism by which the values are introduced into the runner environment,
|
||||
but there are no actual secrets contained in the values of the debugging
|
||||
variables.)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Git provides a stats page, but that page reports only commits to the "main"
|
||||
branch. To prepare a more comprehensive stats page, one alternative that has
|
||||
been tested is:
|
||||
|
||||
https://github.com/tomgi/git_stats
|
||||
|
||||
After installing, statistics pages can be generated by running:
|
||||
the following in a clone of the repository.
|
||||
|
||||
user@machine:~/brlcad$ git_stats generate
|
||||
|
||||
Note - on Ubuntu, per https://github.com/rails/rails/issues/34822 I had to add the line:
|
||||
to the git_stats file
|
||||
|
||||
user@machine:~$ echo "gem 'bigdecimal', '1.4.2'" >> /var/lib/gems/2.7.0/gems/git_stats-1.0.17/bin/git_stats
|
||||
|
||||
and install the older version of bigdecimal (per https://stackoverflow.com/a/17026442):
|
||||
|
||||
user@machine:~$ gem install bigdecimal -v 1.4.2
|
||||
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
(1) Other large scale git conversions:
|
||||
https://web.archive.org/web/20130327012743/https://techbase.kde.org/Projects/MovetoGit
|
||||
https://techbase.kde.org/Projects/MovetoGit
|
||||
https://blog.runtux.com/posts/2014/04/18/233/
|
||||
https://blogs.ed.ac.uk/timc/2017/11/24/migrating-from-svn-to-git-while-splitting-repository/
|
||||
http://esr.ibiblio.org/?p=5634
|
||||
http://esr.ibiblio.org/?p=6792
|
||||
http://esr.ibiblio.org/?p=8607
|
||||
https://gitlab.com/ideasman42/blender-git-migration/
|
||||
@@ -0,0 +1,35 @@
|
||||
BRL-CAD on AIX README
|
||||
=====================
|
||||
|
||||
Dec. 15, 2011 - As of this date, it has been some time since an AIX
|
||||
build of BRL-CAD has been tested, and thus far it has NOT been tested
|
||||
b with the new CMake build system.
|
||||
|
||||
Kitware provides an AIX powerpc binary for CMake, see
|
||||
http://www.cmake.org/cmake/resources/software.html
|
||||
|
||||
|
||||
Building BRL-CAD under AIX is fairly straightforward using a correctly
|
||||
installed version on the GCC compiler. If, however, you are using the
|
||||
IBM Visual Age compiler, then there are additional manual compilation
|
||||
steps that will be necessary. In particular, the IBM compiler and
|
||||
associated standard C library headers are inconsistent with respect to
|
||||
ANSI/POSIX compliance compiler options.
|
||||
|
||||
The IBM compiler supports a variety of compliance options, the two of
|
||||
particular relevance to building BRL-CAD (in terms of being the close
|
||||
to obtaining a functional compile) are the strict compliance
|
||||
(-qlanglvl=stdc89) or "extended" compliance (-qlanglvl=extc89) modes.
|
||||
Problems encountered in our build environment using strict compliance
|
||||
does mostly work though we ran into errors in the standard C library
|
||||
headers.
|
||||
|
||||
Using the "extended" compliance mode resolved the standard C library
|
||||
header issues, but introduces problems in the compilation of BRL-CAD
|
||||
as the compiler then disables the provision of the __STDC__
|
||||
preprocessor symbol. BRL-CAD then defaults back to K&R mode, which
|
||||
the compiler verbosely refuses to compile. The "quick fix" that has
|
||||
been used in the past is to simply swap the compiler between the two
|
||||
modes as when one fails (e.g. strict), the other usually succeeds
|
||||
(e.g. extended). Barring that working, you can use extended mode and
|
||||
define __STDC__ manually.
|
||||
@@ -14,10 +14,3 @@ packaging mechanisms. Failing that, CMake can be bootstrapped
|
||||
without much difficulty on most modern Unix-style platforms.
|
||||
|
||||
BRL-CAD is included in the FreeBSD Ports system.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
When setting up to compile on GhostBSD, the following packages are
|
||||
enough to get started:
|
||||
|
||||
pkg install cmake ninja os-generic-userland-devtools
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
BRL-CAD on IRIX README
|
||||
======================
|
||||
|
||||
Building on IRIX is one of the most tricky platforms to support
|
||||
without installing up-to-date compilation tools. That said, the build
|
||||
has and should work just fine with either the MIPSPro or GCC
|
||||
compilers. The best performance is usually achieved with the MIPSPro
|
||||
compiler, whereas GCC will compile faster with less fuss.
|
||||
|
||||
Kitware provides CMake binaries for IRIX64 platforms:
|
||||
http://www.cmake.org/cmake/resources/software.html
|
||||
|
||||
|
||||
Parallel building
|
||||
-----------------
|
||||
For parallel compilation on IRIX, the -P option enables parallel
|
||||
build mode and the PARALLEL environment variable sets the number
|
||||
of CPUs (default is two):
|
||||
|
||||
PARALLEL=4 make -P
|
||||
|
||||
|
||||
Potential problems you may encounter
|
||||
------------------------------------
|
||||
|
||||
Symptom: MIPSPro linker reports symbol(s) missing
|
||||
|
||||
Description: There's a known bug in the MIPSpro linker involving
|
||||
rpaths that are too long (namely longer than 255 characters) so care
|
||||
should be taken to not compile in directories that are too deep. The
|
||||
way this bug is usually seen is that the build will fail during
|
||||
compilation where unresolved symbols are reported during linking,
|
||||
symbols that are correctly included in the libraries being linked.
|
||||
|
||||
Workaround: It is usually sufficient to retry the compile from a
|
||||
shorter path. (e.g., /tmp instead of /some/deep/path/to/brlcad)
|
||||
|
||||
---
|
||||
|
||||
Symptom: GCC crashes during compilation with internal errors
|
||||
|
||||
Description: Certain versions of the gcc compiler are known to crash
|
||||
with internal error messages, for example on src/mged/animedit.c, when
|
||||
using optimization flags (i.e. -O3).
|
||||
|
||||
Workaround: Compile in whatever directory is failing with -O0 instead:
|
||||
cd src/mged
|
||||
sed -i "s/ -O3 / -O0 /g" CMakeFiles/mged.dir/flags.make
|
||||
make
|
||||
cd ../..
|
||||
make
|
||||
+10
-72
@@ -34,17 +34,6 @@ cmake ../brlcad -DBRLCAD_WORD_SIZE=64BIT
|
||||
* Note that in both of the above situations you need both a compiler that
|
||||
works in the alternate mode and system libraries of the correct type.
|
||||
|
||||
Alpine Linux
|
||||
------------
|
||||
|
||||
Alpine is an interesting test platform in that it does not use
|
||||
glibc but instead relies on mucl.
|
||||
|
||||
At a minimum, will need the following packages:
|
||||
apk add cmake git gcc g++ make linux-headers
|
||||
|
||||
TODO - look into setup-xorg-base
|
||||
|
||||
|
||||
Arch Linux
|
||||
----------
|
||||
@@ -64,10 +53,10 @@ you will be able to compile BRL-CAD.
|
||||
|
||||
Following the build instructions in the INSTALL file. You will need:
|
||||
|
||||
gcc (8+, e.g. 8.0.3)
|
||||
g++ (8+, e.g. 8.0.3)
|
||||
gcc (3+, e.g. 4.0.3)
|
||||
g++ (3+, e.g. 4.0.3)
|
||||
make (e.g. gnu make 3.8.0)
|
||||
cmake (3.20 or newer)
|
||||
cmake (2.8.8 or newer)
|
||||
|
||||
All three of those have implicit dependencies on other packages.
|
||||
|
||||
@@ -100,14 +89,10 @@ should be deleted and recreated for each new attempt at package
|
||||
generation.
|
||||
|
||||
|
||||
Redhat/Rocky (should also apply to other Redhat derivatives)
|
||||
------------------------------------------------------------
|
||||
Redhat/Fedora
|
||||
-------------
|
||||
|
||||
If you don't already have the necessary development tools:
|
||||
|
||||
yum install git cmake gcc gcc-c++
|
||||
|
||||
Development packages for building on Redhat-based platforms:
|
||||
Development packages for building on Redhat/Fedora platforms:
|
||||
|
||||
yum install libX11-devel
|
||||
yum install libXext-devel # optional
|
||||
@@ -116,53 +101,14 @@ Development packages for building on Redhat-based platforms:
|
||||
yum install fontconfig-devel # optional
|
||||
yum install mesa-libGL-devel # optional
|
||||
|
||||
If you wish to create rpm packages, you'll need rpmbuild
|
||||
|
||||
yum install rpm-build # optional
|
||||
|
||||
When setting up older OS versions for building BRL-CAD, it is sometimes
|
||||
necessary to install some non-default compilation tools in addition to the
|
||||
usual dependencies. (The default toolchain can be too old to properly build
|
||||
BRL-CAD, if the compilers don't support sufficiently modern standards.) The
|
||||
following example is for Rocky Linux 8:
|
||||
|
||||
yum install scl-utils
|
||||
yum install gcc-toolset-11
|
||||
|
||||
Then to run within that environment:
|
||||
|
||||
scl enable gcc-toolset-11 bash
|
||||
|
||||
|
||||
The CMake version may be too old as well. One way to deal with this is to
|
||||
download the source code and bootstrap it (do this within the gcc-toolset-11
|
||||
enabled bash):
|
||||
|
||||
sudo yum install openssl-devel
|
||||
|
||||
curl -L -O -J https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3.tar.gz
|
||||
tar -xvf cmake-3.28.3.tar.gz
|
||||
cd cmake-3.28.3
|
||||
./bootstrap --prefix=/opt/cmake
|
||||
make -j3 && make install
|
||||
export PATH=/opt/cmake/bin
|
||||
|
||||
From there, with the gcc-toolset enabled and the PATH set to include the new
|
||||
CMake, it should be possible to proceed normally with the build.
|
||||
|
||||
-------
|
||||
|
||||
To determine what particular version of Redhat or Redhat-like system you are
|
||||
To determine what particular version of Redhat or Fedora you are
|
||||
using, check these files:
|
||||
|
||||
cat /etc/redhat-release (Redhat)
|
||||
cat /etc/fedora-release (Fedora)
|
||||
cat /etc/rocky-release (Rocky)
|
||||
|
||||
-------
|
||||
cat /etc/redhat-release
|
||||
cat /etc/fedora-release
|
||||
|
||||
Note there is a supported rpm package generation script in file
|
||||
'sh/make_rpm.sh' which can only function on a Redhat-derived
|
||||
'sh/make_rpm.sh' which can only function on a Fedora or openSUSE
|
||||
system. It can be used like so:
|
||||
|
||||
$ cd <BRL-CAD source directory>
|
||||
@@ -173,14 +119,6 @@ system. It can be used like so:
|
||||
It is also possible to create an RPM package using CPack with the
|
||||
make package build target, on systems with the proper RPM tools.
|
||||
|
||||
-------
|
||||
|
||||
One issue encountered running Rocky Linux 8 in VirtualBox - networking is off
|
||||
by default. To enable, look for a file in /etc/sysconfig/network-scripts/
|
||||
called something like enp0s3 and set ONBOOT=yes (see
|
||||
https://unix.stackexchange.com/a/79273)
|
||||
|
||||
|
||||
PPC64 Linux
|
||||
-----------
|
||||
|
||||
|
||||
+9
-14
@@ -28,8 +28,9 @@ http://www.cmake.org/cmake/resources/software.html
|
||||
X11 Window Server
|
||||
-----------------
|
||||
You'll need to install an X11 server if you would like to build Tk and
|
||||
have a graphical user interface. Apple no longer supports X11, so the
|
||||
recommended X Window Server is now XQuartz: http://www.xquartz.org
|
||||
have a graphical user interface. Apple's X11 is the recommended X
|
||||
Window Server, but XQuartz should work too and is often newer than the
|
||||
official Apple version: http://xquartz.macosforge.org
|
||||
|
||||
Supported Versions
|
||||
------------------
|
||||
@@ -81,20 +82,14 @@ online may prove fruitful.
|
||||
|
||||
So far, if parallel building doesn't work due to the above issue a
|
||||
non-parallel build will still succeed. Another workaround is to build
|
||||
just subdirectories (e.g. src, doc, etc.) individually and then
|
||||
just subdirectories (e.g. src/other, doc, etc.) individually and then
|
||||
do a toplevel make in non-parallel mode to finalize the build.
|
||||
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
Apple now employs code signing and we do not yet. To debug apps using
|
||||
Instruments, they will need to be signed with permissions in order to
|
||||
debug them. Here's an example that signs them all with a
|
||||
get-task-allow permission that lets them be introspected:
|
||||
|
||||
echo "<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.get-task-allow</key><true/></dict></plist>" >> debug.plist
|
||||
codesign -s - -v -f --entitlements debug.plist bin/*
|
||||
OpenSceneGraph and OSX
|
||||
----------------------
|
||||
For 32bit OSX builds of an X11+OpenSceneGraph BRL-CAD:
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=BUNDLED -DBRLCAD_ENABLE_OSG=ON
|
||||
-DBRLCAD_REGEX=SYSTEM -DBRLCAD_WORD_SIZE=32BIT -DOSG_WINDOWING_SYSTEM=X11
|
||||
|
||||
|
||||
Tips
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
BRL-CAD: A Vibrant Open Source Model
|
||||
|
||||
+ intro
|
||||
|
||||
- speaker
|
||||
|
||||
- old vs. new (Rurel's joke about old farmer and his young farmhand)
|
||||
|
||||
+ overview
|
||||
|
||||
- history, players
|
||||
|
||||
Mike Muuss [author of ping]
|
||||
|
||||
- license
|
||||
|
||||
- languages (Ohloh stats)
|
||||
|
||||
+ important technical features
|
||||
|
||||
- database format
|
||||
|
||||
- tools
|
||||
|
||||
- libraries
|
||||
|
||||
- use of other FOSS libraries
|
||||
|
||||
- road map
|
||||
|
||||
+ other features
|
||||
|
||||
+ community
|
||||
|
||||
- players (Ohloh stats)
|
||||
|
||||
+ process
|
||||
|
||||
- Source Forge
|
||||
|
||||
- API changes
|
||||
|
||||
- deprecation policy
|
||||
|
||||
- release procedures
|
||||
|
||||
- version control
|
||||
|
||||
- bug tracking
|
||||
|
||||
- policy
|
||||
|
||||
- outreach
|
||||
+20
-18
@@ -1,11 +1,11 @@
|
||||
*** ARCHIVED -- legacy platform, no longer supported (retained for
|
||||
*** historical reference). This document is not installed and is kept
|
||||
*** only to preserve the historical record.
|
||||
|
||||
BRL-CAD on Solaris README
|
||||
=========================
|
||||
There have been a variety of Solaris-style operating systems that appeared
|
||||
following Sun's open-source release of OpenSolaris.
|
||||
In recent years, there have been a variety of Solaris-style operating
|
||||
systems that have appeared, following Sun's open-source release of
|
||||
OpenSolaris. OpenSolaris itself doesn't seem to be especially active, but
|
||||
another derivative system called OpenIndiana has appeared, based on the
|
||||
illumos kernel - the Solaris file will be the place to add any notes
|
||||
needed to build on such derivative systems, as well as Solaris proper.
|
||||
|
||||
Kitware does not provide a pre-compiled binary for CMake on Solaris
|
||||
type systems. To bootstrap from the source code, try the following:
|
||||
@@ -26,20 +26,22 @@ bin directory to your path:
|
||||
csh: setenv PATH /home/user/cmake-install/bin:$PATH
|
||||
bash: export PATH=/home/user/cmake-install/bin:$PATH
|
||||
|
||||
From there, you can proceed with building BRL-CAD. The most recent tests
|
||||
From there, you should be good to build BRL-CAD. The most recent tests
|
||||
of the Sun Studio compiler suggest that there are issues to resolve,
|
||||
so (unless you want to fix those issues, which would be welcome!) you
|
||||
probably want to use the GCC compiler suite to build BRL-CAD as well:
|
||||
|
||||
CC=gcc CXX=g++ cmake ../brlcad
|
||||
|
||||
If while compiling you encounter an error "Text relocation remains against
|
||||
symbol" along with some number of lines following, it usually means that the
|
||||
build has attempted to link a static system library into a shared library being
|
||||
compiled. If this happens, it likely indicates a problem with the CMake build
|
||||
logic and should be reported as a bug - you may also need to install a shared
|
||||
version of the library. Another possibility would be to add -mipure-text to
|
||||
the linker flags.
|
||||
If while compiling you encounter an error "Text relocation remains
|
||||
against symbol" along with some number of lines following, it usually
|
||||
means that the build has attempted to link a static system library
|
||||
into a shared library being compiled (e.g. attempting to link a system
|
||||
libz.a into the png library distributed in src/other/libpng being
|
||||
compiled as libpng.so). If this happens, it likely indicates a problem
|
||||
with the CMake build logic and should be reported as a bug - you may also
|
||||
need to install a shared version of the library. Another possibility
|
||||
would be to add -mipure-text to the linker flags.
|
||||
|
||||
OpenIndiana
|
||||
-----------
|
||||
@@ -53,7 +55,7 @@ pkg install pkg:/developer/versioning/subversion
|
||||
pkg install pkg:/system/header
|
||||
pkg install pkg:/developer/lexer/flex
|
||||
|
||||
(Note that gcc-7 building doesn't work as of 2017-08-23 - the above install
|
||||
list is a starting point, but the repo currently doesn't build and isn't close
|
||||
to building. UPDATE - as of 2024 a *much* newer compiler will be needed...
|
||||
C++17 support is now required.)
|
||||
(Note that gcc-7 building doesn't work as of 2017-08-23 - the above
|
||||
install list is a starting point, but the repo currently doesn't
|
||||
build and isn't close to building. It may be an older gcc would
|
||||
have better luck...)
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
*** ARCHIVED -- legacy platform, no longer supported (retained for
|
||||
*** historical reference). This document is not installed and is kept
|
||||
*** only to preserve the historical record.
|
||||
|
||||
BRL-CAD on VAX README
|
||||
=====================
|
||||
|
||||
|
||||
+45
-131
@@ -3,23 +3,57 @@ BRL-CAD on Windows README
|
||||
|
||||
The usual way to build BRL-CAD for Windows is to use the CMake build
|
||||
system generator and the Microsoft Visual Studio C++ (MSVC) compiler.
|
||||
Recent versions of both are recommended. If generating an installer,
|
||||
the following options are available and supported:
|
||||
Recent versions of both (as of this writing, MSVC 2013 and CMake
|
||||
2.8.12+) are recommended. If generating an installer, the Nullsoft
|
||||
Scriptable Install System (NSIS) tool is also required.
|
||||
|
||||
Nullsoft Scriptable Install System (NSIS) - generates a. .exe installer
|
||||
|
||||
WiX Toolset - generates an MSI installer.
|
||||
|
||||
These tools must be installed separately - they are not included with
|
||||
CMake or Visual Studio.
|
||||
|
||||
Note: In principle BRL-CAD can be built using CMake and environments
|
||||
like Cygwin and/or Mingw/Msys, but they are largely untested and
|
||||
In principle, BRL-CAD can be built using CMake and environments like
|
||||
Cygwin and/or Mingw/Msys, but the latter is largely untested and
|
||||
infrequently supported. Enhancements or bug reports are welcome.
|
||||
|
||||
Visual Studio
|
||||
-------------
|
||||
|
||||
=== Notes on Windows 10 with latest SDK ===
|
||||
Because Tk before 8.6.8 cannot be built with the latest Windows SDK
|
||||
(naming conflicts; see [1]), an earlier one (10.0.15063.0 is the
|
||||
last working version) is needed (available at [2]).
|
||||
|
||||
Targets `tk`, `tkstub` and `libfb` need to be changed to use this SDK
|
||||
(right click on a target -> Configuration Properties -> General;
|
||||
select the SDK in Windows SDK Version).
|
||||
|
||||
Compilation is then unchanged from the below.
|
||||
|
||||
[1]: https://core.tcl.tk/tk/tktview?name=3d34589aa0
|
||||
[2]: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
|
||||
|
||||
===========================================
|
||||
|
||||
=== Notes on Visual Studio 14 2015 ===
|
||||
|
||||
In order to build this version (required to build the Creo 3 converter)
|
||||
with CMake, you must ensure that Microsoft's "rc.exe" program is
|
||||
installed and findable by CMake.
|
||||
|
||||
To install "rc.exe", run or re-run the Visual Studio installer and enable
|
||||
Visual C++ components and "Visual Studio Extensibility Tools Update 1" under
|
||||
the "Common Tools" section.
|
||||
|
||||
The extensibility tools can become unselected by default in some
|
||||
configurations. Verify "rc.exe" is installed in:
|
||||
|
||||
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64"
|
||||
|
||||
Add that directory to your "Path" user variable so CMake will be able to
|
||||
locate the rc executable.
|
||||
|
||||
See:
|
||||
https://stackoverflow.com/questions/43847542/rc-exe-no-longer-found-in-vs-2015-command-prompt
|
||||
|
||||
======================================
|
||||
|
||||
|
||||
To build with CMake and Visual Studio, the first step is to obtain the
|
||||
BRL-CAD sources and create a build directory. In principle, it is not
|
||||
*required* to have a separate build directory, but with Windows and
|
||||
@@ -59,126 +93,6 @@ You may want to produce an NSIS installer. If so, locate a target
|
||||
named PACKAGE and run it. The end result should be an .exe file
|
||||
capable of installing BRL-CAD.
|
||||
|
||||
Debugging with Visual Studio
|
||||
----------------------------
|
||||
|
||||
For most compilation environments, BRL-CAD defines a Debug build
|
||||
configuration which disables optimizations and a Release build that
|
||||
enables them - although Debug builds are generally easier to use when
|
||||
tracking down problems, both configurations keep debugging information.
|
||||
This allows for easier diagnosis of problems in real-world use, as
|
||||
well as diagnosis of issues that occur only when optimizations are
|
||||
enabled.
|
||||
|
||||
MSVC and Windows present a more complicated situation. On that platform,
|
||||
Debug versions of applications are not redistributable:
|
||||
https://docs.microsoft.com/en-us/cpp/windows/determining-which-dlls-to-redistribute
|
||||
|
||||
As a consequence the default BRL-CAD build configuration for Release
|
||||
(unlike other platforms) does not support debugging.
|
||||
|
||||
If it is necessary to debug a Release mode specific issue on Windows,
|
||||
extra steps are needed. Users of CMake may be familiar with the build
|
||||
configuration RelWithDebInfo, which is normally disabled for BRL-CAD
|
||||
builds - debugging a Release-mode-only problem is exactly the situation
|
||||
in which this build configuration is needed.
|
||||
|
||||
To re-enable the availability of RelWithDebInfo for BRL-CAD builds, set
|
||||
the compilation variable ENABLE_ALL_CONFIG_TYPES to ON - once set,
|
||||
BRL-CAD's configure will no longer eliminate CMake build types other
|
||||
than Debug and Release.
|
||||
|
||||
Working with MSI files
|
||||
----------------------
|
||||
|
||||
The WiX Toolset's MSI file, in addition to the standard interactive
|
||||
graphical install, also supports a command line based silent
|
||||
install. (See, for example, https://stackoverflow.com/a/25230485)
|
||||
|
||||
msiexec.exe /i c:\BRL-CAD-7.32.0_win64.msi /QN /L*V "C:\Temp\brlcad_install.log"
|
||||
|
||||
The logging step is not required but is recommended to allow for
|
||||
easier understanding of any issues that might arise.
|
||||
|
||||
===========================================
|
||||
|
||||
=== Setting a specific SDK version ===
|
||||
|
||||
If a particular version of the Windows SDK is needed, it is specified
|
||||
with CMAKE_SYSTEM_VERSION (for example, to use 10.0.15063.0 the user
|
||||
would define a New Entry in the CMake GUI before running configure,
|
||||
make the variable CMAKE_SYSTEM_VERSION as a string type, and assign the
|
||||
value of 10.0.15063.0.)
|
||||
|
||||
Note that for this to work the SDK version in question must be
|
||||
installed on the system. To see what versions are installed,
|
||||
look for Windows SDK installs in the "Apps & Features" Setup
|
||||
interface.
|
||||
|
||||
=======================================================
|
||||
|
||||
=== Tracking down the source of a header inclusion ===
|
||||
|
||||
If a Windows system header is reporting an error, it can be helpful to identify
|
||||
where the header is being included from. By default MSVC doesn't report this,
|
||||
but in Visual Studio there is a "ShowIncludes" setting that may be enabled to
|
||||
find this information:
|
||||
|
||||
https://stackoverflow.com/a/1138045
|
||||
|
||||
This setting may also be added to the compilation flags directly
|
||||
in CMake as "/showIncludes":
|
||||
|
||||
https://docs.microsoft.com/en-us/cpp/build/reference/showincludes-list-include-files
|
||||
|
||||
Note that the output of this can be very verbose, especially if applied
|
||||
globally to all targets - you may want to consider applying it specifically to
|
||||
an individual target with target_compile_options. This flag is a very useful
|
||||
tool when trying to determine *why* a particular header is present in an error
|
||||
message.
|
||||
|
||||
=========================================================
|
||||
|
||||
=== Debugging build outputs from a Ninja compilation ===
|
||||
|
||||
Normally, Visual Studio is used to debug Windows executables. However,
|
||||
another alternative is available called WinDbg:
|
||||
|
||||
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools
|
||||
|
||||
This has been used successfully to debug Ninja produced executables.
|
||||
Note that if debugging an issue unique to Release builds, you will
|
||||
want to set the CMake variable ENABLE_ALL_CONFIG_TYPES to ON
|
||||
and the specific build type to RelWithDebInfo
|
||||
|
||||
cmake.exe -G Ninja -ENABLE_ALL_CONFIG_TYPES=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
|
||||
===========================================
|
||||
|
||||
=== Notes on Visual Studio 14 2015 ===
|
||||
|
||||
In order to build this version (required to build the Creo 3 converter)
|
||||
with CMake, you must ensure that Microsoft's "rc.exe" program is
|
||||
installed and findable by CMake.
|
||||
|
||||
To install "rc.exe", run or re-run the Visual Studio installer and enable
|
||||
Visual C++ components and "Visual Studio Extensibility Tools Update 1" under
|
||||
the "Common Tools" section.
|
||||
|
||||
The extensibility tools can become unselected by default in some
|
||||
configurations. Verify "rc.exe" is installed in:
|
||||
|
||||
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64"
|
||||
|
||||
Add that directory to your "Path" user variable so CMake will be able to
|
||||
locate the rc executable.
|
||||
|
||||
See:
|
||||
https://stackoverflow.com/questions/43847542/rc-exe-no-longer-found-in-vs-2015-command-prompt
|
||||
|
||||
======================================
|
||||
|
||||
|
||||
MINGW (WORK IN PROGRESS - THIS DOES NOT YET WORK!!!)
|
||||
-----
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
= BRL-CAD: Open Source Solid Modeling
|
||||
:toc: macro
|
||||
:toc-title:
|
||||
:icons: font
|
||||
:experimental:
|
||||
|
||||
// Attributes for easy maintenance
|
||||
:project-url: https://brlcad.org
|
||||
:docs-url: https://brl-cad.github.io/docs
|
||||
:repo-url: https://github.com/BRL-CAD/brlcad
|
||||
:chat-url: https://brlcad.zulipchat.com
|
||||
|
||||
image:https://img.shields.io/badge/license-BSD/LGPL-blue.svg["License"]
|
||||
image:https://img.shields.io/badge/status-active-brightgreen.svg["Status"]
|
||||
|
||||
BRL-CAD is a powerful open-source cross-platform solid modeling system that includes interactive geometry editing, high-performance ray-tracing for rendering and geometric analysis, image and signal-processing tools, a system performance analysis benchmark suite, and libraries for robust geometric manipulation.
|
||||
|
||||
For more than 40 years, BRL-CAD has been a primary solid modeling system used by the U.S. military to model weapons systems for vulnerability and lethality analyses.
|
||||
|
||||
---
|
||||
|
||||
toc::[]
|
||||
|
||||
== Key Features
|
||||
|
||||
* **CSG Modeling:** Constructive Solid Geometry (CSG) provides precise Boolean operations on primitives.
|
||||
* **High Performance:** Multi-threaded ray-tracing and a high-performance memory allocator.
|
||||
* **Hybrid Representation:** Supports both CSG and B-Rep (NURBS) geometry.
|
||||
* **Extensive Toolset:** Over 400 specialized command-line utilities for geometry processing.
|
||||
* **Legacy of Stability:** Proven in production environments since 1979.
|
||||
|
||||
== Getting Started
|
||||
|
||||
=== Prerequisites
|
||||
To build BRL-CAD from source, you will need:
|
||||
* **CMake** (3.26+)
|
||||
* **C/C++ Compiler** (GCC, Clang, or MSVC)
|
||||
* **Build Tools** (Make, Ninja, or Visual Studio)
|
||||
|
||||
=== Quick Build (Unix/macOS)
|
||||
[source,bash]
|
||||
----
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
|
||||
make -j$(nproc)
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
For detailed installation instructions across different platforms, please refer to our link:{docs-url}/install[Installation Guide].
|
||||
====
|
||||
|
||||
== Documentation
|
||||
|
||||
We have consolidated our extensive documentation (formerly a mix of DocBook/XML, MediaWiki, troff, plain text, and more) onto **AsciiDoc**, with the authoritative sources under `doc/asciidoc/`.
|
||||
|
||||
* **Tutorials:** link:{docs-url}/tutorials[Browse the Manuals]
|
||||
* **Developer Guides:** link:{docs-url}/hacking and link:{repo-url}/blob/main/HACKING
|
||||
* **Wiki:** {project-url}/wiki[snapshot that is a little out of date]
|
||||
* **Etc:** link:{docs-url}[Not everything, but a lot]
|
||||
|
||||
== Contributing
|
||||
|
||||
BRL-CAD is a community-driven project. We welcome contributions in the form of bug reports, feature requests, code, and documentation.
|
||||
|
||||
1. **Chat with Us:** Connect with us on Zulip link:{chat-url}.
|
||||
2. **Find Issues:** Check our link:{repo-url}/issues[Issue Tracker].
|
||||
3. **Submit a PR:** We follow a standard Fork-and-Pull Request workflow.
|
||||
|
||||
[IMPORTANT]
|
||||
.Documentation Contributors
|
||||
We're prototyping the use of **AsciiDoc** for all project documentation in a separate "docs" repo.
|
||||
|
||||
== License
|
||||
|
||||
BRL-CAD is free and open-source software. Most components are licensed under the **BSD** or **LGPL** licenses. See the `COPYING` file for more details.
|
||||
+1
-1
@@ -32,7 +32,7 @@ Difficulty:
|
||||
Prerequisites:
|
||||
* Basic familiarity with C++ STL
|
||||
References:
|
||||
* https://github.com/BRL-CAD/stepcode
|
||||
* src/other/step
|
||||
* src/conv/step
|
||||
* include
|
||||
* http://www.sgi.com/tech/stl/
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@
|
||||
BRL-CAD Development Strategy
|
||||
|
||||
This is a living document that defines and aims to help maintain a
|
||||
consistent development strategy for addressing BRL-CAD requirements.
|
||||
consistent develpment strategy for addressing BRL-CAD requirements.
|
||||
It recognizes areas of strategic importance, outlines projects to
|
||||
bolster those areas, and identifies specific actionable objectives.
|
||||
|
||||
@@ -234,7 +234,7 @@ bolster those areas, and identifies specific actionable objectives.
|
||||
**** TODO create data caching test cases (1)
|
||||
**** TODO implement libbu data caching (1)
|
||||
|
||||
*** implement LIBRT object caching (4)
|
||||
*** implment LIBRT object caching (4)
|
||||
**** TODO serialize BoT prep data to cache (1)
|
||||
**** TODO serialize NURBS prep data to cache (1)
|
||||
**** TODO serialize tess/plot data to cache (2)
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
include(${BRLCAD_CMAKE_DIR}/AsciiDoc.cmake)
|
||||
|
||||
verbose_add_subdirectory(asciidoc toplevel)
|
||||
verbose_add_subdirectory(asciidoc system)
|
||||
verbose_add_subdirectory(asciidoc articles)
|
||||
verbose_add_subdirectory(asciidoc books)
|
||||
verbose_add_subdirectory(asciidoc devguides)
|
||||
verbose_add_subdirectory(asciidoc lessons)
|
||||
verbose_add_subdirectory(asciidoc presentations)
|
||||
verbose_add_subdirectory(asciidoc specifications)
|
||||
|
||||
cmakefiles(
|
||||
CMakeLists.txt
|
||||
README.adoc
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -1,58 +0,0 @@
|
||||
= BRL-CAD AsciiDoc Documentation
|
||||
:toc: left
|
||||
:toclevels: 2
|
||||
|
||||
== Overview
|
||||
|
||||
This directory contains BRL-CAD documentation in AsciiDoc format. The `.adoc`
|
||||
files here are the authoritative documentation sources and are committed to
|
||||
version control. The one-time conversion from the original DocBook 5 XML
|
||||
sources is complete, and those legacy XML sources have been removed; edit the
|
||||
`.adoc` files directly.
|
||||
|
||||
The `.adoc` files are built into HTML and man-page outputs at compile time
|
||||
using **asciiquack**, BRL-CAD's self-contained AsciiDoc processor.
|
||||
|
||||
== Directory Structure
|
||||
|
||||
[source]
|
||||
----
|
||||
doc/asciidoc/
|
||||
├── articles/ General articles
|
||||
├── books/ Long-form books
|
||||
├── devguides/ Developer guides
|
||||
├── lessons/ Tutorial lessons
|
||||
├── presentations/ Presentation slides
|
||||
├── specifications/ Format specifications
|
||||
└── system/
|
||||
├── man1/ Section 1 man pages (command-line tools)
|
||||
├── man3/ Section 3 man pages (C library functions)
|
||||
├── man5/ Section 5 man pages (file formats)
|
||||
└── mann/ Section n man pages (MGED commands)
|
||||
----
|
||||
|
||||
== Build Outputs
|
||||
|
||||
When `BRLCAD_EXTRADOCS=ON` is set at CMake configuration time:
|
||||
|
||||
* Man pages (`system/man*/`) are built by asciiquack with `-b manpage` and
|
||||
installed under `${MAN_DIR}/man*/`.
|
||||
* Articles, books, and other prose (`articles/`, `books/`, etc.) are built
|
||||
with `-b html5` and installed under `${DOC_DIR}/html/asciidoc/`.
|
||||
|
||||
The build logic is in `brlcad/misc/CMake/AsciiDoc.cmake`.
|
||||
|
||||
== Authoritative Sources
|
||||
|
||||
The `.adoc` files in this directory are the authoritative documentation
|
||||
sources. The one-time conversion from the retired DocBook 5 XML sources is
|
||||
complete, so there is no conversion step to re-run: make all documentation
|
||||
changes by editing the `.adoc` files directly.
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Documentation is built only when CMake is configured with
|
||||
`BRLCAD_EXTRADOCS=ON`. With the default configuration the documentation
|
||||
targets are skipped, so remember to enable this option when working on or
|
||||
verifying documentation.
|
||||
====
|
||||
@@ -1,488 +0,0 @@
|
||||
set(
|
||||
articles_EN
|
||||
TEMPLATE.adoc
|
||||
about.adoc
|
||||
adrt_pathtrace.adoc
|
||||
build_pattern.adoc
|
||||
build_region.adoc
|
||||
camo_shader.adoc
|
||||
ebm_primitive.adoc
|
||||
gcv.adoc
|
||||
ged.adoc
|
||||
main_menu.adoc
|
||||
mged.adoc
|
||||
mgedrc.adoc
|
||||
nirt.adoc
|
||||
object_types.adoc
|
||||
oed.adoc
|
||||
overlap_tool.adoc
|
||||
pipes.adoc
|
||||
procedural_geometry.adoc
|
||||
projection_shader.adoc
|
||||
renderer_showcase.adoc
|
||||
taxonomy.adoc
|
||||
tire.adoc
|
||||
)
|
||||
|
||||
if(BRLCAD_EXTRADOCS)
|
||||
add_asciidoc("HTML" articles_EN "articles" "")
|
||||
endif(BRLCAD_EXTRADOCS)
|
||||
|
||||
set(
|
||||
articles_EN_IMAGES
|
||||
images/Lee_tux.gif
|
||||
images/build_pattern_fig01.png
|
||||
images/build_pattern_fig02.png
|
||||
images/build_pattern_fig03.png
|
||||
images/build_pattern_fig04.png
|
||||
images/build_pattern_fig05.png
|
||||
images/build_pattern_fig06.png
|
||||
images/build_pattern_fig07.png
|
||||
images/build_region_fig01.png
|
||||
images/build_region_fig02.png
|
||||
images/build_region_fig03.png
|
||||
images/build_region_fig04.png
|
||||
images/ebm_primitive_fig01.png
|
||||
images/ebm_primitive_fig02.png
|
||||
images/ebm_primitive_fig03.png
|
||||
images/gcv_architecture.png
|
||||
images/gcv_unsupported_tessellation.png
|
||||
images/gcv_using_gdiff.png
|
||||
images/mgedrc_fig01.png
|
||||
images/mgedrc_fig02.png
|
||||
images/mgedrc_fig03.png
|
||||
images/moss_ssm.gif
|
||||
images/nirt_fig01.png
|
||||
images/nirt_fig02.png
|
||||
images/nirt_fig03.png
|
||||
images/nirt_fig04.png
|
||||
images/nirt_fig05.png
|
||||
images/nirt_fig06.png
|
||||
images/nirt_fig07.png
|
||||
images/nirt_fig08.png
|
||||
images/nirt_fig09.png
|
||||
images/nirt_fig10.png
|
||||
images/nirt_fig11.png
|
||||
images/nirt_fig12.png
|
||||
images/nirt_fig13.png
|
||||
images/nirt_fig14.png
|
||||
images/nirt_fig15.png
|
||||
images/nirt_fig16.png
|
||||
images/nirt_fig17.png
|
||||
images/nirt_fig18.png
|
||||
images/nirt_fig19.png
|
||||
images/nirt_fig20.png
|
||||
images/nirt_fig21.png
|
||||
images/nirt_fig22.png
|
||||
images/nirt_fig23.png
|
||||
images/nirt_fig24.png
|
||||
images/oed_fig01.png
|
||||
images/oed_fig02.png
|
||||
images/oed_fig03.png
|
||||
images/oed_fig04.png
|
||||
images/oed_fig05.png
|
||||
images/oed_fig06.png
|
||||
images/oed_fig07.png
|
||||
images/oed_fig08.png
|
||||
images/oed_fig09.png
|
||||
images/oed_fig10.png
|
||||
images/oed_fig11.png
|
||||
images/oed_fig12.png
|
||||
images/oed_fig13.png
|
||||
images/overlap_tool_fig01.gif
|
||||
images/overlap_tool_fig02.gif
|
||||
images/overlap_tool_fig03.png
|
||||
images/pipes_fig01.png
|
||||
images/pipes_fig02.png
|
||||
images/pipes_fig03.png
|
||||
images/pipes_fig04.png
|
||||
images/pipes_fig05.png
|
||||
images/pipes_fig06.png
|
||||
images/pipes_fig07.png
|
||||
images/pipes_fig08.png
|
||||
images/pipes_fig09.png
|
||||
images/pipes_fig10.png
|
||||
images/pipes_fig11.png
|
||||
images/pipes_fig12.png
|
||||
images/pipes_fig13.png
|
||||
images/projection_shader_fig01.png
|
||||
images/projection_shader_fig02.png
|
||||
images/projection_shader_fig03.png
|
||||
images/projection_shader_fig04.png
|
||||
images/projection_shader_fig05.png
|
||||
images/projection_shader_fig06.png
|
||||
images/projection_shader_fig07.png
|
||||
images/tire_fig01.png
|
||||
images/tire_fig02.png
|
||||
images/tire_fig03.png
|
||||
images/tire_fig04.png
|
||||
images/tire_fig05.png
|
||||
images/tire_fig06.png
|
||||
images/tire_fig07.png
|
||||
images/tire_fig08.png
|
||||
images/tire_fig09.png
|
||||
images/tire_fig10.png
|
||||
images/tire_fig11.png
|
||||
images/tire_fig12.png
|
||||
images/tire_fig13.png
|
||||
images/tire_fig14.png
|
||||
images/base.gif
|
||||
images/bool.gif
|
||||
images/coord-axes.gif
|
||||
images/cup_and_mug.gif
|
||||
images/cup_and_mug_small.gif
|
||||
images/cup_out+in.gif
|
||||
images/cup_outside.gif
|
||||
images/cup_w_handle.gif
|
||||
images/faceplate.gif
|
||||
images/faceplate_menu.gif
|
||||
images/faceplate_menu_sm.gif
|
||||
images/faceplate_sm.gif
|
||||
images/fillet.gif
|
||||
images/fillet.jpg
|
||||
images/handle.gif
|
||||
images/handle.jpg
|
||||
images/mug_camo.gif
|
||||
images/mug_camo.jpg
|
||||
images/mug_green.gif
|
||||
images/mug_green.jpg
|
||||
images/prims.gif
|
||||
images/rim.gif
|
||||
images/rim.jpg
|
||||
images/gallery_terragen.png
|
||||
images/gallery_voxelize.png
|
||||
images/gallery_lattice.png
|
||||
images/gallery_loftwing.png
|
||||
images/gallery_loftwing_prop.png
|
||||
images/gallery_gears.png
|
||||
images/gallery_helicoil.png
|
||||
images/gallery_specimen.png
|
||||
images/gallery_seashell.png
|
||||
images/gallery_seashell_nautilus.png
|
||||
images/gallery_sphflake.png
|
||||
images/gallery_donuts.png
|
||||
images/gallery_menger.png
|
||||
images/gallery_pyramid.png
|
||||
images/gallery_torii.png
|
||||
images/gallery_masonry_frame.png
|
||||
images/gallery_masonry_sheetrock.png
|
||||
images/gallery_masonry_brick.png
|
||||
images/gallery_masonry_bm.png
|
||||
images/gallery_brickwall.png
|
||||
images/gallery_mkbuilding.png
|
||||
images/gallery_cchannel.png
|
||||
images/gallery_ringworld.png
|
||||
images/gallery_vegetation.png
|
||||
images/gallery_clutter.png
|
||||
images/gallery_metaball.png
|
||||
images/gallery_molecule.png
|
||||
images/gallery_pdb-g.png
|
||||
images/gallery_pipe.png
|
||||
images/gallery_pipetest.png
|
||||
images/gallery_tube.png
|
||||
images/gallery_lens.png
|
||||
images/gallery_brep_simple.png
|
||||
images/gallery_brep_cube.png
|
||||
images/gallery_brep_cobb.png
|
||||
images/gallery_brep_surface.png
|
||||
images/gallery_brep_trimmed.png
|
||||
images/gallery_brep_invalid.png
|
||||
images/gallery_breplicator.png
|
||||
images/gallery_csgbrep.png
|
||||
images/gallery_surfaceintersect.png
|
||||
images/gallery_spltest.png
|
||||
images/gallery_tea.png
|
||||
images/gallery_wavy.png
|
||||
images/gallery_kurt.png
|
||||
images/gallery_sketch.png
|
||||
images/gallery_wdb_example.png
|
||||
images/gallery_globe.png
|
||||
images/gallery_bottest.png
|
||||
images/gallery_pix2g.png
|
||||
images/gallery_bolt.png
|
||||
images/gallery_coil.png
|
||||
images/gallery_fence.png
|
||||
images/gallery_gastank.png
|
||||
images/gallery_handle.png
|
||||
images/gallery_human.png
|
||||
images/gallery_picket_fence.png
|
||||
images/gallery_tire.png
|
||||
images/gallery_window.png
|
||||
images/gallery_window_frame.png
|
||||
images/gallery_wire.png
|
||||
images/renderer_gallery_rt_l0.png
|
||||
images/renderer_gallery_rt_l1.png
|
||||
images/renderer_gallery_rt_l2.png
|
||||
images/renderer_gallery_rt_l3.png
|
||||
images/renderer_gallery_rt_l4.png
|
||||
images/renderer_gallery_rt_l5.png
|
||||
images/renderer_gallery_rt_l6.png
|
||||
images/renderer_gallery_rt_l7.png
|
||||
images/renderer_gallery_rt_l8.png
|
||||
images/renderer_gallery_rt_haze.png
|
||||
images/renderer_gallery_rt_cutaway.png
|
||||
images/renderer_gallery_rtedge_default.png
|
||||
images/renderer_gallery_rtedge_colored.png
|
||||
images/renderer_gallery_rtedge_regions.png
|
||||
images/renderer_gallery_rthide.png
|
||||
images/renderer_gallery_rtdepth.png
|
||||
images/renderer_gallery_rtxray.png
|
||||
images/adrt_castle_path.png
|
||||
images/adrt_castle_rt.png
|
||||
images/adrt_castle_rt_ao.png
|
||||
images/adrt_chess_path.png
|
||||
images/adrt_chess_rt.png
|
||||
images/adrt_chess_rt_ao.png
|
||||
images/adrt_cornell_path.png
|
||||
images/adrt_cornell_phong.png
|
||||
images/adrt_toyjeep_depth.png
|
||||
images/adrt_toyjeep_normal.png
|
||||
images/adrt_toyjeep_path.png
|
||||
images/adrt_toyjeep_phong.png
|
||||
images/adrt_toyjeep_rt.png
|
||||
images/adrt_toyjeep_rt_ao.png
|
||||
images/adrt_toyjeep_spall.png
|
||||
images/objtype_arb8.png
|
||||
images/objtype_arb8_variety.png
|
||||
images/objtype_arbn.png
|
||||
images/objtype_arbn_variety.png
|
||||
images/objtype_ars.png
|
||||
images/objtype_bot.png
|
||||
images/objtype_bot_variety.png
|
||||
images/objtype_brep.png
|
||||
images/objtype_cline.png
|
||||
images/objtype_comb_variety.png
|
||||
images/objtype_dsp.png
|
||||
images/objtype_ebm.png
|
||||
images/objtype_ehy.png
|
||||
images/objtype_ehy_variety.png
|
||||
images/objtype_ell.png
|
||||
images/objtype_ell_variety.png
|
||||
images/objtype_epa.png
|
||||
images/objtype_epa_variety.png
|
||||
images/objtype_eto.png
|
||||
images/objtype_eto_variety.png
|
||||
images/objtype_extrude.png
|
||||
images/objtype_half.png
|
||||
images/objtype_hrt.png
|
||||
images/objtype_hrt_variety.png
|
||||
images/objtype_hyp.png
|
||||
images/objtype_hyp_variety.png
|
||||
images/objtype_metaball.png
|
||||
images/objtype_metaball_variety.png
|
||||
images/objtype_nmg.png
|
||||
images/objtype_part.png
|
||||
images/objtype_part_variety.png
|
||||
images/objtype_pipe.png
|
||||
images/objtype_pipe_variety.png
|
||||
images/objtype_pnts.png
|
||||
images/objtype_rcc.png
|
||||
images/objtype_rec.png
|
||||
images/objtype_revolve.png
|
||||
images/objtype_rhc.png
|
||||
images/objtype_rhc_variety.png
|
||||
images/objtype_rpc.png
|
||||
images/objtype_rpc_variety.png
|
||||
images/objtype_sph.png
|
||||
images/objtype_submodel.png
|
||||
images/objtype_superell.png
|
||||
images/objtype_superell_variety.png
|
||||
images/objtype_tgc.png
|
||||
images/objtype_tgc_variety.png
|
||||
images/objtype_tor.png
|
||||
images/objtype_tor_variety.png
|
||||
images/objtype_trc.png
|
||||
images/objtype_vol.png
|
||||
)
|
||||
if(TARGET mged OR TARGET qged OR TARGET archer)
|
||||
if(BRLCAD_EXTRADOCS)
|
||||
add_doc(articles_EN_IMAGES html/articles/images)
|
||||
add_asciidoc("HTML" articles_EN articles articles_EN_IMAGES_cp)
|
||||
endif(BRLCAD_EXTRADOCS)
|
||||
endif(TARGET mged OR TARGET qged OR TARGET archer)
|
||||
|
||||
# Procedural geometry gallery -- opt-in regeneration of the committed snapshot.
|
||||
#
|
||||
# The .adoc article and the gallery_*.png images above are a committed snapshot
|
||||
# (consumed by the normal doc build like any other article). This target
|
||||
# rebuilds that snapshot from the actual built tools via a pure-CMake generator
|
||||
# (no shell, python, or platform assumptions). It is opt-in and excluded from
|
||||
# the default build; a developer regenerates, reviews the diff, and commits.
|
||||
option(BRLCAD_GENERATE_GALLERY "Regenerate the procedural geometry gallery snapshot" OFF)
|
||||
if(BRLCAD_GENERATE_GALLERY AND TARGET rt AND TARGET mged)
|
||||
# Demo generator programs to build before regenerating (those that exist).
|
||||
set(
|
||||
GALLERY_DEMO_TARGETS
|
||||
terragen voxelize lattice loftwing gears helicoil specimen seashell sphflake donuts
|
||||
menger pyramid torii masonry brickwall mkbuilding cchannel ringworld
|
||||
vegetation clutter metaball molecule pdb-g pipe pipetest tube lens
|
||||
brep_simple brep_cube brep_cobb brep_surface brep_trimmed brep_invalid
|
||||
breplicator csgbrep surfaceintersect spltest tea wavy kurt sketch
|
||||
wdb_example globe bottest pix2g bolt coil fence gastank handle human
|
||||
picket_fence tire window window_frame wire
|
||||
)
|
||||
set(gallery_deps rt mged)
|
||||
foreach(t ${GALLERY_DEMO_TARGETS})
|
||||
if(TARGET ${t})
|
||||
list(APPEND gallery_deps ${t})
|
||||
endif(TARGET ${t})
|
||||
endforeach(t)
|
||||
|
||||
add_custom_target(
|
||||
procedural-gallery-snapshot
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -DRT=$<TARGET_FILE:rt> -DMGED=$<TARGET_FILE:mged>
|
||||
-DBINDIR=$<TARGET_FILE_DIR:rt>
|
||||
-DMANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/gallery/gallery_manifest.cmake
|
||||
-DIMGDIR=${CMAKE_CURRENT_SOURCE_DIR}/images
|
||||
-DADOC=${CMAKE_CURRENT_SOURCE_DIR}/procedural_geometry.adoc
|
||||
-DINPUTDIR=${CMAKE_CURRENT_SOURCE_DIR}/gallery/inputs
|
||||
-DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/gallery_work -DSIZE=512
|
||||
"-DTITLE=BRL-CAD Procedural Geometry Gallery"
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/gallery/generate_gallery.cmake
|
||||
DEPENDS ${gallery_deps}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Regenerating procedural geometry gallery snapshot (images + adoc)"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
set_target_properties(procedural-gallery-snapshot PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
endif(BRLCAD_GENERATE_GALLERY AND TARGET rt AND TARGET mged)
|
||||
|
||||
# Renderer showcase gallery -- opt-in regeneration of the committed snapshot.
|
||||
#
|
||||
# Like the procedural geometry gallery above, the .adoc article and
|
||||
# renderer_gallery_*.png images are normal committed documentation. This target
|
||||
# refreshes those products from the built renderers and sample Cornell box so a
|
||||
# developer can review and commit the resulting diff.
|
||||
option(BRLCAD_GENERATE_RENDERER_GALLERY "Regenerate the renderer showcase gallery snapshot" OFF)
|
||||
if(
|
||||
BRLCAD_GENERATE_RENDERER_GALLERY
|
||||
AND TARGET rt
|
||||
AND TARGET rtedge
|
||||
AND TARGET rtdepth
|
||||
AND TARGET rtxray
|
||||
AND TARGET rthide
|
||||
AND TARGET bw-png
|
||||
AND TARGET fbclear
|
||||
AND TARGET plot3-fb
|
||||
AND TARGET fb-png
|
||||
AND TARGET cornell.g
|
||||
)
|
||||
add_custom_target(
|
||||
renderer-gallery-snapshot
|
||||
COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
-DRT=$<TARGET_FILE:rt>
|
||||
-DRTEDGE=$<TARGET_FILE:rtedge>
|
||||
-DRTDEPTH=$<TARGET_FILE:rtdepth>
|
||||
-DRTXRAY=$<TARGET_FILE:rtxray>
|
||||
-DRTHIDE=$<TARGET_FILE:rthide>
|
||||
-DBWPNG=$<TARGET_FILE:bw-png>
|
||||
-DFBCLEAR=$<TARGET_FILE:fbclear>
|
||||
-DPLOT3FB=$<TARGET_FILE:plot3-fb>
|
||||
-DFBPNG=$<TARGET_FILE:fb-png>
|
||||
-DMANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/renderer_gallery/renderer_gallery_manifest.cmake
|
||||
-DIMGDIR=${CMAKE_CURRENT_SOURCE_DIR}/images
|
||||
-DADOC=${CMAKE_CURRENT_SOURCE_DIR}/renderer_showcase.adoc
|
||||
-DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/renderer_gallery_work
|
||||
-DDB=${CMAKE_BINARY_DIR}/${DATA_DIR}/db/cornell.g
|
||||
-DSIZE=512
|
||||
"-DTITLE=BRL-CAD Renderer Showcase"
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/renderer_gallery/generate_renderer_gallery.cmake
|
||||
DEPENDS
|
||||
rt
|
||||
rtedge
|
||||
rtdepth
|
||||
rtxray
|
||||
rthide
|
||||
bw-png
|
||||
fbclear
|
||||
plot3-fb
|
||||
fb-png
|
||||
cornell.g
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Regenerating renderer showcase gallery snapshot (images + adoc)"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
set_target_properties(renderer-gallery-snapshot PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
endif()
|
||||
|
||||
# ADRT path-tracing gallery -- opt-in regeneration of the committed snapshot.
|
||||
#
|
||||
# Like the galleries above, the adrt_pathtrace.adoc article is hand-written and
|
||||
# the adrt_*.png images are committed documentation. This target refreshes the
|
||||
# images from the built `adrt`, `rt`, and `mged` tools and the sample databases
|
||||
# so a developer can review and commit the resulting diff.
|
||||
option(BRLCAD_GENERATE_ADRT_GALLERY "Regenerate the ADRT path-tracing snapshot" OFF)
|
||||
if(
|
||||
BRLCAD_GENERATE_ADRT_GALLERY
|
||||
AND TARGET adrt
|
||||
AND TARGET rt
|
||||
AND TARGET mged
|
||||
AND TARGET toyjeep.g
|
||||
AND TARGET castle.g
|
||||
AND TARGET cornell-kunigami.g
|
||||
AND TARGET chessboard.g
|
||||
)
|
||||
add_custom_target(
|
||||
adrt-pathtrace-snapshot
|
||||
COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
-DADRT=$<TARGET_FILE:adrt>
|
||||
-DRT=$<TARGET_FILE:rt>
|
||||
-DMGED=$<TARGET_FILE:mged>
|
||||
-DDB=${CMAKE_BINARY_DIR}/${DATA_DIR}/db
|
||||
-DIMGDIR=${CMAKE_CURRENT_SOURCE_DIR}/images
|
||||
-DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/adrt_gallery_work
|
||||
-DSIZE=512
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/adrt_gallery/generate_adrt_gallery.cmake
|
||||
DEPENDS
|
||||
adrt
|
||||
rt
|
||||
mged
|
||||
toyjeep.g
|
||||
castle.g
|
||||
cornell-kunigami.g
|
||||
chessboard.g
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Regenerating ADRT path-tracing snapshot (images)"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
set_target_properties(adrt-pathtrace-snapshot PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
|
||||
endif()
|
||||
|
||||
cmakefiles(
|
||||
CMakeLists.txt
|
||||
${articles_EN}
|
||||
${articles_EN_IMAGES}
|
||||
images/tire_fig12.svg
|
||||
images/tire_fig13.svg
|
||||
gallery/gallery_manifest.cmake
|
||||
gallery/generate_gallery.cmake
|
||||
renderer_gallery/renderer_gallery_manifest.cmake
|
||||
renderer_gallery/generate_renderer_gallery.cmake
|
||||
adrt_gallery/generate_adrt_gallery.cmake
|
||||
gallery/inputs/pipe.stdin
|
||||
gallery/inputs/wire.stdin
|
||||
gallery/inputs/tube.stdin
|
||||
gallery/inputs/moss64.pix
|
||||
gallery/inputs/caffeine.pdb
|
||||
gallery/inputs/mol-cube.dat
|
||||
images/objtype_src/README.adoc
|
||||
images/objtype_src/objtype_lib.py
|
||||
images/objtype_src/gen_object_types.py
|
||||
)
|
||||
|
||||
add_subdirectory(hy)
|
||||
add_subdirectory(it)
|
||||
add_subdirectory(ru)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -1,83 +0,0 @@
|
||||
= Article Title
|
||||
Firstname Middlename Lastname <devs@brlcad.org>
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
[[some-descriptive-tag]]
|
||||
First paragraph goes here.
|
||||
|
||||
|
||||
....
|
||||
|
||||
benchmark TIMEFRAME=1 run
|
||||
|
||||
....
|
||||
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
The preceding _benchmark_ command example can get a lot more complex.
|
||||
|
||||
====
|
||||
|
||||
When you run the *benchmark* with the *help* option, you might see this output:
|
||||
|
||||
|
||||
....
|
||||
sean@gcc1-power7 bin]$benchmark help
|
||||
Usage: ./benchmark [command(s)] [OPTION=value] [RT_OPTIONS]
|
||||
|
||||
Available commands:
|
||||
clean
|
||||
...
|
||||
|
||||
....
|
||||
|
||||
|
||||
|
||||
Another paragraph with embedded list is shown here. Each paragraph gets its own para and should be wrapped for readability and localized context diff comparisons. A list of items:
|
||||
|
||||
|
||||
* Bullet item 1.
|
||||
* Bullet item 2.
|
||||
|
||||
|
||||
|
||||
|
||||
[[another-tag-for-main-body]]
|
||||
== Breaking up the flow into sections
|
||||
|
||||
You can use sections to group sections of your document together, but they are not necessary.
|
||||
|
||||
.Example embedded image text.
|
||||
image::http://brlcad.org/images/logo/BRL-CAD_gear_logo_w_name_256.png[width=256]
|
||||
|
||||
Another image, but rendered inline image:http://brlcad.org/images/logo/BRL-CAD_gear_logo_64x64.png[width=64] with the paragraph text.
|
||||
|
||||
More paragraphs...
|
||||
|
||||
[cols="2*"]
|
||||
|===
|
||||
|Type
|
||||
|Description
|
||||
|
||||
|ell
|
||||
|Generalized Ellipsoid
|
||||
|arb8
|
||||
|Arbitrary Regular Polyhedron with up to 8 vertices
|
||||
|===
|
||||
|
||||
|
||||
[CAUTION]
|
||||
====
|
||||
There's a lot more you can do with AsciiDoc. Consult the reference documentation for syntax and examples:
|
||||
|
||||
|
||||
* https://docs.asciidoctor.org/asciidoc/latest/[AsciiDoc Language Documentation]
|
||||
* https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/[AsciiDoc Syntax Quick Reference]
|
||||
|
||||
====
|
||||
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
= About BRL-CAD
|
||||
Christopher Sean Morrison <devs@brlcad.org>
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
[[article-body]]
|
||||
BRL-CAD is a powerful cross-platform Open Source combinatorial Constructive Solid Geometry (CSG) solid modeling system that includes interactive 3D solid geometry editing, high-performance ray-tracing support for rendering and geometric analysis, network-distributed framebuffer support, image and signal-processing tools, path-tracing and photon mapping support for realistic image synthesis, a system performance analysis benchmark suite, an embedded scripting interface, and libraries for robust high-performance geometric representation and analysis.
|
||||
|
||||
For more than 20 years, BRL-CAD has been the primary tri-service solid modeling CAD system used by the U.S. military to model weapons systems for vulnerability and lethality analyses. The solid modeling system is frequently used in a wide range of military, academic, and industrial applications including in the design and analysis of vehicles, mechanical parts, and architecture. The package has also been used in radiation dose planning, medical visualization, computer graphics education, CSG concepts and modeling education, and system performance benchmark testing among other purposes.
|
||||
|
||||
BRL-CAD supports a great variety of geometric representations including an extensive set of traditional CSG primitive implicit solids such as boxes, ellipsoids, cones, and tori, as well as explicit solids made from closed collections of Uniform B-Spline Surfaces, Non-Uniform Rational B-Spline (NURBS) surfaces, n-Manifold Geometry (NMG), and purely faceted mesh geometry. All geometric objects may be combined using boolean set-theoretic CSG operations including union, intersection, and difference.
|
||||
|
||||
BRL-CAD has been under active development with a portability heritage that includes systems such as a DEC VAX-11/780 running 4.3 BSD; DECStations running ULTRIX; Silicon Graphics 3030, 4D "IRIS", O2, Onyx, and Origin systems running various versions of IRIX; Sun Microsystems Sun-3 and Sun-4 Sparcs running SunOS; the Cray 1, Cray X-MP, Cray Y-MP, and Cray 2 running UNICOS; DEC Alpha AXP running OSF/1; Apple Macintosh II running A/UX; iPSC/860 Hypercube running NX/2; the Alliant FX/8, FX/80, and FX/2800; Gould/Encore SEL PowerNode6000/9000 and NP1; NeXT workstations; IBM RS/6000; HPPA 9000/700 running HPUX; Ardent/Stardent; Encore Multi-Max; and much more.
|
||||
|
||||
BRL-CAD is a collection of more than 400 tools, utilities, and applications comprising more than a million lines of source code. The package is intentionally designed to be extensively cross-platform and is actively developed on and maintained for many common operating system environments including BSD, Linux, Solaris, Mac OS X, and Windows among others. BRL-CAD is distributed in binary and source code form as free open source software (FOSS), provided under Open Source Initiative (OSI) approved license terms.
|
||||
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Mike Muuss began the initial architecture and design of BRL-CAD back in 1979. Development as a unified package began in 1983. The first public release was made in 1984. BRL-CAD became an open source project on 21 December 2004.
|
||||
|
||||
====
|
||||
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
# generate_adrt_gallery.cmake -- regenerate the ADRT path-tracing snapshot.
|
||||
#
|
||||
# Run via: cmake -DADRT=... -DRT=... -DMGED=... -DDB=<share/db dir>
|
||||
# -DIMGDIR=... -DWORKDIR=... -DSIZE=512
|
||||
# -P generate_adrt_gallery.cmake
|
||||
#
|
||||
# Reproduces the committed images for doc/asciidoc/articles/adrt_pathtrace.adoc:
|
||||
# path-traced renders from the standalone `adrt` tool alongside `rt` full
|
||||
# lighting and `rt` ambient occlusion, for the sample toyjeep, chessboard,
|
||||
# castle, and Cornell box models. Cross-platform: uses only cmake tooling.
|
||||
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
foreach(v ADRT RT MGED DB IMGDIR WORKDIR)
|
||||
if(NOT DEFINED ${v})
|
||||
message(FATAL_ERROR "generate_adrt_gallery: -D${v}=... is required")
|
||||
endif()
|
||||
endforeach()
|
||||
if(NOT DEFINED SIZE)
|
||||
set(SIZE 512)
|
||||
endif()
|
||||
|
||||
set(RENDER_TIMEOUT 1800)
|
||||
set(AO "set ambSamples=128")
|
||||
|
||||
file(MAKE_DIRECTORY "${WORKDIR}")
|
||||
file(MAKE_DIRECTORY "${IMGDIR}")
|
||||
|
||||
set(N_OK 0)
|
||||
set(N_FAIL 0)
|
||||
set(FAILED "")
|
||||
|
||||
# Run a render command whose -o target is "${IMGDIR}/<out>", and report on it.
|
||||
function(render label out)
|
||||
set(img "${IMGDIR}/${out}")
|
||||
file(REMOVE "${img}")
|
||||
execute_process(
|
||||
COMMAND ${ARGN}
|
||||
WORKING_DIRECTORY "${WORKDIR}" TIMEOUT ${RENDER_TIMEOUT}
|
||||
RESULT_VARIABLE rc OUTPUT_VARIABLE log ERROR_VARIABLE log)
|
||||
if(EXISTS "${img}")
|
||||
file(SIZE "${img}" isz)
|
||||
else()
|
||||
set(isz 0)
|
||||
endif()
|
||||
if(isz GREATER 0 AND rc EQUAL 0)
|
||||
message(STATUS "[${label}] wrote ${out} (${isz} bytes)")
|
||||
math(EXPR N_OK "${N_OK} + 1" )
|
||||
else()
|
||||
message(WARNING "[${label}] FAILED (rc=${rc}):\n${log}")
|
||||
math(EXPR N_FAIL "${N_FAIL} + 1")
|
||||
list(APPEND FAILED "${out}")
|
||||
endif()
|
||||
set(N_OK "${N_OK}" PARENT_SCOPE)
|
||||
set(N_FAIL "${N_FAIL}" PARENT_SCOPE)
|
||||
set(FAILED "${FAILED}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# --- Toy jeep: path trace, rt comparison, and adrt shading modes ------------
|
||||
set(TJ "${DB}/toyjeep.g")
|
||||
render(toyjeep_path adrt_toyjeep_path.png
|
||||
${ADRT} -s${SIZE} -H256 -p12 -a35 -e25 -o "${IMGDIR}/adrt_toyjeep_path.png" "${TJ}" all)
|
||||
render(toyjeep_normal adrt_toyjeep_normal.png
|
||||
${ADRT} -s${SIZE} -m normal -p12 -a35 -e25 -o "${IMGDIR}/adrt_toyjeep_normal.png" "${TJ}" all)
|
||||
render(toyjeep_phong adrt_toyjeep_phong.png
|
||||
${ADRT} -s${SIZE} -m phong -p12 -a35 -e25 -o "${IMGDIR}/adrt_toyjeep_phong.png" "${TJ}" all)
|
||||
render(toyjeep_depth adrt_toyjeep_depth.png
|
||||
${ADRT} -s${SIZE} -m depth -p12 -a35 -e25 -o "${IMGDIR}/adrt_toyjeep_depth.png" "${TJ}" all)
|
||||
render(toyjeep_rt adrt_toyjeep_rt.png
|
||||
${RT} -s${SIZE} -a35 -e25 -A0.4 -o "${IMGDIR}/adrt_toyjeep_rt.png" "${TJ}" all)
|
||||
render(toyjeep_rt_ao adrt_toyjeep_rt_ao.png
|
||||
${RT} -s${SIZE} -a35 -e25 -A1.1 -c "${AO}" -o "${IMGDIR}/adrt_toyjeep_rt_ao.png" "${TJ}" all)
|
||||
|
||||
# --- Chessboard: bright sky lifts the flat, light-colored tiles -------------
|
||||
set(CH "${DB}/chess/chessboard.g")
|
||||
render(chess_path adrt_chess_path.png
|
||||
${ADRT} -s${SIZE} -H768 -p12 -a40 -e35 -C 255/255/255 -o "${IMGDIR}/adrt_chess_path.png" "${CH}" board.g)
|
||||
render(chess_rt adrt_chess_rt.png
|
||||
${RT} -s${SIZE} -a40 -e35 -A0.4 -o "${IMGDIR}/adrt_chess_rt.png" "${CH}" board.g)
|
||||
render(chess_rt_ao adrt_chess_rt_ao.png
|
||||
${RT} -s${SIZE} -a40 -e35 -A1.1 -c "${AO}" -o "${IMGDIR}/adrt_chess_rt_ao.png" "${CH}" board.g)
|
||||
|
||||
# --- Castle: facetize the CSG to a colored BoT, then path trace -------------
|
||||
# The castle is one region unioning many instanced solids; on-the-fly NMG
|
||||
# evaluation fails, so convert it once with the Manifold facetizer. rt still
|
||||
# traces the original CSG natively for the comparison images.
|
||||
set(CFAC "${WORKDIR}/castle_fac.g")
|
||||
file(REMOVE "${CFAC}")
|
||||
configure_file("${DB}/castle.g" "${CFAC}" COPYONLY)
|
||||
execute_process(COMMAND ${MGED} -c "${CFAC}" facetize -o castle_only all.g/castle
|
||||
TIMEOUT ${RENDER_TIMEOUT} RESULT_VARIABLE frc OUTPUT_VARIABLE flog ERROR_VARIABLE flog)
|
||||
execute_process(COMMAND ${MGED} -c "${CFAC}" r castle_r u castle_only
|
||||
TIMEOUT 120 OUTPUT_QUIET ERROR_QUIET)
|
||||
execute_process(COMMAND ${MGED} -c "${CFAC}" mater castle_r plastic 255 255 100 0
|
||||
TIMEOUT 120 OUTPUT_QUIET ERROR_QUIET)
|
||||
render(castle_path adrt_castle_path.png
|
||||
${ADRT} -s${SIZE} -H256 -p12 -a135 -e30 -o "${IMGDIR}/adrt_castle_path.png" "${CFAC}" castle_r)
|
||||
render(castle_rt adrt_castle_rt.png
|
||||
${RT} -s${SIZE} -a135 -e30 -A0.4 -o "${IMGDIR}/adrt_castle_rt.png" "${DB}/castle.g" castle)
|
||||
render(castle_rt_ao adrt_castle_rt_ao.png
|
||||
${RT} -s${SIZE} -a135 -e30 -A1.1 -c "${AO}" -o "${IMGDIR}/adrt_castle_rt_ao.png" "${DB}/castle.g" castle)
|
||||
|
||||
# --- Cornell box: global illumination from the emissive ceiling panel -------
|
||||
set(CB "${DB}/cornell-kunigami.g")
|
||||
render(cornell_path adrt_cornell_path.png
|
||||
${ADRT} -s${SIZE} -H512 -E 278,370.9,-454 -L 278,274,279 -p25 -o "${IMGDIR}/adrt_cornell_path.png" "${CB}" all.g)
|
||||
render(cornell_phong adrt_cornell_phong.png
|
||||
${ADRT} -s${SIZE} -m phong -E 278,370.9,-454 -L 278,274,279 -p25 -o "${IMGDIR}/adrt_cornell_phong.png" "${CB}" all.g)
|
||||
|
||||
message(STATUS "")
|
||||
message(STATUS "ADRT path-tracing snapshot: ${N_OK} rendered, ${N_FAIL} failed.")
|
||||
if(FAILED)
|
||||
string(REPLACE ";" ", " failstr "${FAILED}")
|
||||
message(STATUS "Failed: ${failstr}")
|
||||
endif()
|
||||
@@ -1,220 +0,0 @@
|
||||
= Path Tracing with ADRT
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
ADRT (the _Advanced Distributed Ray Tracer_) is BRL-CAD's triangle-based
|
||||
rendering engine. Alongside the usual scanline shaders it carries a
|
||||
Monte-Carlo *path tracer* that computes global illumination -- soft ambient
|
||||
light, contact shadows, and diffuse color bleeding -- by tracing many random
|
||||
light paths per pixel. This article explains how ADRT is put together and
|
||||
walks through producing path-traced images with the standalone `adrt`
|
||||
command, comparing the result to `rt`'s ambient-occlusion lighting.
|
||||
|
||||
.Path-traced global illumination: the Cornell box rendered with `adrt -m path`
|
||||
image::images/adrt_cornell_path.png[Cornell box path traced,384]
|
||||
|
||||
== How ADRT works
|
||||
|
||||
ADRT is layered on top of BRL-CAD's *TIE* (Triangle Intersection Engine), the
|
||||
same SIMD-friendly kd-tree ray tracer used by `rtwizard`, `nirt`'s mesh mode,
|
||||
and the geometry viewers. Because TIE only intersects triangles, ADRT first
|
||||
*tessellates* geometry:
|
||||
|
||||
* Bags-of-triangles (BoT) are handed to TIE directly.
|
||||
* Every other solid (CSG primitives, NMG, etc.) is tessellated to triangles as
|
||||
the database tree is walked. Region colors are carried onto the resulting
|
||||
meshes, and regions whose material shader is a light source (the classic
|
||||
`light` shader or an OSL `emitter`) are marked *emissive*.
|
||||
|
||||
Rendering itself lives in *librender* (`src/adrt/librender`), a small library of
|
||||
interchangeable shaders selected by name:
|
||||
|
||||
[cols="1,4"]
|
||||
|===
|
||||
|`path` |Monte-Carlo path tracer (global illumination)
|
||||
|`phong` |Direct Phong lighting from the eye
|
||||
|`normal` |Surface normals encoded as RGB
|
||||
|`depth` |Camera-space depth
|
||||
|`flat` |Flat region color
|
||||
|`component`, `cut`, `flos`, `grid`, `spall`, `surfel` |Analysis shaders
|
||||
|===
|
||||
|
||||
Several front ends drive that library:
|
||||
|
||||
* *`adrt`* -- a single-process, headless renderer that writes an image file.
|
||||
This is the tool used throughout this article.
|
||||
* *`isst`* -- an interactive Tcl/Tk + OpenGL viewer for real-time fly-throughs.
|
||||
* *`adrt_master`* / *`adrt_slave`* -- a networked master/worker pair (the
|
||||
"distributed" in ADRT) that farms tiles out to compute nodes for an external
|
||||
observer.
|
||||
|
||||
== Rendering a path-traced image
|
||||
|
||||
The `adrt` command loads a `.g` database, frames the requested objects, renders
|
||||
one frame, and writes the image (the extension selects the format):
|
||||
|
||||
----
|
||||
adrt [options] model.g object [object ...]
|
||||
----
|
||||
|
||||
[cols="1,4"]
|
||||
|===
|
||||
|`-o file` |Output image; extension picks the format (default `adrt.png`)
|
||||
|`-s N` |Square image size in pixels (default 512); or `-w`/`-n` for width/height
|
||||
|`-m mode` |Shader: `path`, `phong`, `normal`, `depth`, `flat` (default `path`)
|
||||
|`-H N` |Path-tracer samples per pixel (default 32) -- more samples, less noise
|
||||
|`-a` / `-e` |View azimuth / elevation in degrees (default 35 / 25)
|
||||
|`-E x,y,z` |Explicit eye point in model units (overrides `-a`/`-e`)
|
||||
|`-L x,y,z` |Explicit look-at point (default: model center)
|
||||
|`-p fov` |Perspective half-angle in degrees (default 25)
|
||||
|`-C r/g/b` |Environment/sky color, 0-255 (default `230/237/255`)
|
||||
|`-P N` |Render threads (default: all CPUs)
|
||||
|===
|
||||
|
||||
A first render of the sample toy jeep:
|
||||
|
||||
----
|
||||
adrt -s 512 -H 256 -a 35 -e 25 -o toyjeep.png toyjeep.g all
|
||||
----
|
||||
|
||||
`adrt` reports the triangle count, load time, and render time, then writes the
|
||||
PNG. The camera is a perspective camera aimed at the model center; `-a`/`-e`
|
||||
orbit it and `-p` sets the field of view. For scenes that are not simply
|
||||
oriented -- an enclosed, Y-up Cornell box, for instance -- give an explicit eye
|
||||
and look-at point instead:
|
||||
|
||||
----
|
||||
adrt -s 512 -H 512 -E 278,370.9,-454 -L 278,274,279 -p 25 \
|
||||
-o cornell.png cornell-kunigami.g all.g
|
||||
----
|
||||
|
||||
=== The environment and ambient light
|
||||
|
||||
Rays that leave the scene without hitting anything pick up light from a built-in
|
||||
environment: a vertical gradient of the sky color, full strength overhead and
|
||||
dimming toward the ground. This "overcast sky" is what illuminates open
|
||||
scenes. With diffuse surfaces it produces physically-based *ambient occlusion*
|
||||
for free -- up-facing faces catch the bright sky while crevices and undersides
|
||||
fall into shadow -- and it also paints the graduated background. `-C` tunes the
|
||||
sky color and brightness (a brighter sky lifts flat, light-colored surfaces).
|
||||
|
||||
Enclosed scenes such as the Cornell box see no sky; there, the emissive light
|
||||
region is the only source, and the interior is lit entirely by bounced,
|
||||
indirect light.
|
||||
|
||||
== Path tracing versus `rt` ambient occlusion
|
||||
|
||||
`rt`, BRL-CAD's production CSG ray tracer, approximates indirect shading with an
|
||||
*ambient occlusion* pass, enabled with a nonzero ambient factor and a sample
|
||||
count:
|
||||
|
||||
----
|
||||
rt -A1.1 -c "set ambSamples=128" -s512 -a35 -e25 -o out.png model.g object
|
||||
----
|
||||
|
||||
The panels below compare, for the same view, ADRT's path tracer against `rt`
|
||||
with full lighting only and `rt` with ambient occlusion added. ADRT's path
|
||||
tracer resolves the sky illumination and soft inter-surface shadowing in a
|
||||
single physically-based pass; `rt`'s ambient occlusion darkens cavities on top
|
||||
of its direct lighting model.
|
||||
|
||||
.Toy jeep -- `adrt -m path` / `rt` full lighting / `rt` ambient occlusion
|
||||
[cols="1,1,1",frame=none,grid=none]
|
||||
|===
|
||||
|image:images/adrt_toyjeep_path.png[adrt path,256]
|
||||
|image:images/adrt_toyjeep_rt.png[rt plain,256]
|
||||
|image:images/adrt_toyjeep_rt_ao.png[rt AO,256]
|
||||
|*adrt path traced*
|
||||
|*rt full lighting*
|
||||
|*rt ambient occlusion*
|
||||
|===
|
||||
|
||||
.Chessboard -- `adrt -m path` / `rt` full lighting / `rt` ambient occlusion
|
||||
[cols="1,1,1",frame=none,grid=none]
|
||||
|===
|
||||
|image:images/adrt_chess_path.png[adrt path,256]
|
||||
|image:images/adrt_chess_rt.png[rt plain,256]
|
||||
|image:images/adrt_chess_rt_ao.png[rt AO,256]
|
||||
|*adrt path traced*
|
||||
|*rt full lighting*
|
||||
|*rt ambient occlusion*
|
||||
|===
|
||||
|
||||
== Global illumination: the Cornell box
|
||||
|
||||
The Cornell box is the classic test of indirect lighting: a closed room lit only
|
||||
by a small ceiling panel. ADRT detects the emissive light region and lets the
|
||||
path tracer bounce that light around the room. Compared with the direct-only
|
||||
`phong` shader, the path-traced image adds the glowing light source, soft
|
||||
shadows beneath the blocks, and *color bleeding* -- the red floor and blue walls
|
||||
tint the neighboring surfaces.
|
||||
|
||||
.Cornell box -- `adrt -m path` (global illumination) versus `adrt -m phong` (direct only)
|
||||
[cols="1,1",frame=none,grid=none]
|
||||
|===
|
||||
|image:images/adrt_cornell_path.png[adrt path,320]
|
||||
|image:images/adrt_cornell_phong.png[adrt phong,320]
|
||||
|*Path traced:* area light, soft shadows, color bleeding
|
||||
|*Phong:* direct lighting only, no indirect light
|
||||
|===
|
||||
|
||||
== Complex CSG: facetize first
|
||||
|
||||
ADRT tessellates as it loads, but a few heavily-booleaned models do not survive
|
||||
on-the-fly NMG evaluation -- the sample `castle`, whose whole structure is one
|
||||
region unioning dozens of instanced solids, is one. `rt` traces it natively as
|
||||
CSG, but for ADRT the robust path is to convert it to a triangle mesh once with
|
||||
the Manifold-based facetizer, then render the mesh:
|
||||
|
||||
----
|
||||
# in mged, on a working copy of the database
|
||||
facetize -o castle_bot all.g/castle
|
||||
|
||||
adrt -s 512 -H 256 -a 135 -e 30 -o castle.png castle.g castle_bot
|
||||
----
|
||||
|
||||
.Castle -- facetized then `adrt -m path` / `rt` full lighting / `rt` ambient occlusion
|
||||
[cols="1,1,1",frame=none,grid=none]
|
||||
|===
|
||||
|image:images/adrt_castle_path.png[adrt path,256]
|
||||
|image:images/adrt_castle_rt.png[rt plain,256]
|
||||
|image:images/adrt_castle_rt_ao.png[rt AO,256]
|
||||
|*adrt path traced*
|
||||
|*rt full lighting*
|
||||
|*rt ambient occlusion*
|
||||
|===
|
||||
|
||||
== Other shading modes
|
||||
|
||||
The same `adrt` invocation reaches librender's analysis shaders through `-m`,
|
||||
useful for inspecting form and orientation without lighting:
|
||||
|
||||
[cols="1,1,1",frame=none,grid=none]
|
||||
|===
|
||||
|image:images/adrt_toyjeep_phong.png[phong,256]
|
||||
|image:images/adrt_toyjeep_normal.png[normal,256]
|
||||
|image:images/adrt_toyjeep_depth.png[depth,256]
|
||||
|*`-m phong`* direct lighting
|
||||
|*`-m normal`* surface normals
|
||||
|*`-m depth`* camera depth
|
||||
|===
|
||||
|
||||
== Notes and limitations
|
||||
|
||||
* The path tracer is a straightforward forward tracer with no next-event
|
||||
estimation or denoising. Raise `-H` to reduce Monte-Carlo noise; large
|
||||
perfectly-diffuse, high-albedo surfaces are the noisiest.
|
||||
* Materials are approximated: regions render as opaque diffuse surfaces using
|
||||
their region color, `light`/`emitter` regions become area lights, and
|
||||
specular/refractive shaders are not yet modeled.
|
||||
* Only triangle-representable geometry contributes; non-tessellatable solids
|
||||
(for example infinite half-spaces) are skipped.
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
The images in this article are a committed snapshot. Developers can regenerate
|
||||
them from the built tools by configuring with
|
||||
`-DBRLCAD_GENERATE_ADRT_GALLERY=ON` and building the `adrt-pathtrace-snapshot`
|
||||
target.
|
||||
====
|
||||
@@ -1,147 +0,0 @@
|
||||
= Using the Build Pattern Tool
|
||||
Lee A Butler; Eric W Edwards; Dwayne L Kregel
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
[[build_pattern_generalinfo]]
|
||||
== General Pattern Information
|
||||
|
||||
As mentioned previously, the Build Pattern tool automates the process of making copies of existing geometry in rectangular, spherical, or cylindrical patterns. The user can choose to pattern at any of three depths of duplication: top, regions, and primitives.
|
||||
|
||||
The Build Pattern tool is run from the graphical user interface (GUI) (under the Tools menu); it currently has no command-line equivalent. The bottom of the pattern control GUI is a usage dialog box that lists pertinent information about each item on the GUI as the user mouses over the text.
|
||||
|
||||
There are many input fields. Some stand alone, and others belong to series that work together to provide the needed information for a specific option. Each series is denoted by a diamond-shaped check box. If the diamond is highlighted red, then all fields in that series are required. All required fields must be filled in for the pattern tool to work properly. It is also important to note that all dimensions must be in millimeters and that no commas should be used in number strings.
|
||||
|
||||
The Build Pattern tool is designed to work from a prototype geometry object. That is to say, the object that is patterned is not included in the resultant pattern.
|
||||
|
||||
|
||||
[[build_pattern_names]]
|
||||
== Pattern Names
|
||||
|
||||
As shown in Figure E-1, the tool appends three numbers to all patterned objects (unless you are using the increment option for primitives, in which case, the numbers for regions and primitives are incremented by the increment amount). For rectangular patterns, the first number is the X axis offset, the second is the Y axis offset, and the third is the Z axis offset. For spherical patterns, the first number references the azimuth, the second references the elevation, and the third references the radii. For cylindrical patterns, the first number references the radii, the second number references the height, and the third number references the azimuth.
|
||||
|
||||
|
||||
[[build_pattern_fields]]
|
||||
== Common Fields for all Patterns:
|
||||
|
||||
There are several fields in the pattern tool GUI that are common to all types of patterns.
|
||||
|
||||
The Group Name field is for the name of the combination to be created (or appended to) by a pattern call.
|
||||
|
||||
The Source String and Replacement String fields must be used together. The source string is the set of characters in each element of the patterned object to be changed. The replacement string is the set of characters that will replace the source string.
|
||||
|
||||
.Example of pattern-generated assembly names.
|
||||
image::../articles/images/build_pattern_fig01.png[]
|
||||
|
||||
The Increment field is only for use when duplicating to the primitive level. It is added to the leftmost number field of each primitive. To determine the increment, examine the primitives of the object(s) you wish to pattern and find the largest span. For example, to create a pattern to the primitive level with the following primitives (which may or may not be in regions or assemblies):
|
||||
|
||||
|
||||
....
|
||||
|
||||
part.s22 part.s22-1 part.s23 part.s24 part.s24+1 part.s24-1 part.s25,
|
||||
|
||||
....
|
||||
|
||||
one needs to determine the span. Note that the leftmost numbers in these primitives range from 22 to 25. The span is the count of distinct leftmost numbers taken inclusively, from the lowest through the highest: 22, 23, 24, and 25 -- four values in all. It is computed as (highest - lowest) + 1, that is, (25 - 22) + 1 = 4. If we use an increment of four, each leftmost number is shifted up by four (22 becomes 26, 23 becomes 27, and so on), and we will get the following set of primitives.
|
||||
|
||||
|
||||
....
|
||||
|
||||
part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
|
||||
|
||||
....
|
||||
|
||||
Although it is acceptable to use a greater increment, gaps in numbers may be troublesome if one is using this capability extensively.
|
||||
|
||||
Finally, the Objects field is used for the names of all the items to be patterned.
|
||||
|
||||
|
||||
[[build_pattern_stringsub]]
|
||||
== String Substitution
|
||||
|
||||
It is also possible to create a pattern in which a string of characters in each element in the object is changed (e.g., "l_" -> "r_"). This is useful for symmetry applications (e.g., left - right) or series (e.g., 1 - n). Each element of the object must have the source string so the user must be thorough and name each primitive, region, and assembly properly. Consider the following example: image:../articles/images/build_pattern_fig07.png[]
|
||||
|
||||
Top-level duplications copy the patterned object and reference its entire structure with matrices, as follows:
|
||||
|
||||
|
||||
....
|
||||
|
||||
/pattern group
|
||||
/COPIED assemblies [MATRICES]
|
||||
/assemblies
|
||||
/regions
|
||||
/primitives
|
||||
|
||||
....
|
||||
|
||||
Region-level duplications copy all assembly and regions and reference from the region level down with matrices.
|
||||
|
||||
|
||||
....
|
||||
|
||||
/pattern group
|
||||
/COPIED assemblies
|
||||
/COPIED regions [MATRICES]
|
||||
/primitives
|
||||
|
||||
....
|
||||
|
||||
Primitive-level duplications copy the entire tree structure to the primitive level without matrices using an increment on all primitives.
|
||||
|
||||
|
||||
....
|
||||
|
||||
/pattern group
|
||||
/COPIED assemblies NO MATRICES
|
||||
/COPIED regions
|
||||
/COPIED primitives
|
||||
|
||||
....
|
||||
|
||||
|
||||
|
||||
|
||||
[[build_pattern_recpatterns]]
|
||||
== Rectangular Patterns
|
||||
|
||||
The rectangular pattern GUI (shown in Figure E-2) is designed to facilitate one-, two-, or three-dimensional rectangular patterns. The default X, Y, and Z directions are positive along each axis. In order to create a rectangle that is not axis aligned, these vectors may be changed with the condition that each must remain precisely perpendicular to the other two. If the Use Directions series is checked, the user specifies the number of copies and the Delta between copies for each axis. If the Use Lists series is checked, the user can specify a list of deltas along each axis.
|
||||
|
||||
.The user interface for building rectangular patterns.
|
||||
image::../articles/images/build_pattern_fig02.png[]
|
||||
|
||||
|
||||
[[build_pattern_spherical]]
|
||||
== Spherical Patterns
|
||||
|
||||
The spherical pattern GUI (shown in Figure E-3) facilitates sphere-shaped patterns rotated around a center vertex using user-specified radii with azimuth and elevation angles. As shown in Figure E-4, the patterned objects--in this case, a series of arrows--may be oriented as built around the sphere or rotated by azimuth and/or elevation such that they are oriented toward the pattern center using the Rotate Azimuth and Rotate Elevation check boxes.
|
||||
|
||||
As shown in Figure E-4, the Pattern Center field is the coordinate at the center of the pattern. The Object Center field is a user-defined coordinate used to locate the object(s) relative to the pattern center. It acts as the key point for any transformations to the pattern object(s).
|
||||
|
||||
The Starting Azimuth and Starting Elevation fields follow the same right-hand-rule Cartesian coordinate conventions as Multi-Device Geometry Editor (MGED) viewing. The Starting Radius is the distance from the Pattern Center to the object center at the user-specified azimuths and elevations.
|
||||
|
||||
If the Create Az/El series is checked, the user defines the number of azimuths and elevations and the deltas between each. If the Use Lists series is checked, the user must specify a list of azimuths and/or elevations.
|
||||
|
||||
The Create Radii and Use Radii List series define offsets from the Starting Radius, allowing the user to create a pattern of concentric spheres. If Create Radii is checked, the user specifies the Number of Radii and the Radius Delta in order to construct a number of equally offset sphere patterns. If the Use Radii List is checked, the user specifies a list of radius offsets.
|
||||
|
||||
.The user interface for building spherical patterns.
|
||||
image::../articles/images/build_pattern_fig03.png[]
|
||||
|
||||
Without the Rotate Azimuth or Rotate Elevation boxes checked, the patterned objects are oriented as built without any rotations. Notice, for example, that every arrow in Figure E-5 points to the left. Notice also that for each patterned arrow, the Object Center (here specified as the tip of the arrow) is located on the circle outline at a distance of one Starting Radius from the Pattern Center. If we set the Object Center to the coordinate at the base of the arrow, the base would then lie on the circular outline. Wherever the Object Center is set is the point at which MGED works with the Object Center coordinate to place and rotate patterned objects.
|
||||
|
||||
.Examples of different spherical pattern orientations.
|
||||
image::../articles/images/build_pattern_fig04.png[]
|
||||
|
||||
.Implementation of spherical patterns.
|
||||
image::../articles/images/build_pattern_fig05.png[]
|
||||
|
||||
|
||||
[[build_pattern_cylind]]
|
||||
== Cylindrical Patterns
|
||||
|
||||
The cylindrical pattern GUI (shown in Figure E-6) facilitates the creation of cylinder-shaped patterns with user-defined center, direction, height, azimuth, and radii inputs. The Base Center is the vertex of the cylinder shape. The Object Center is a user-defined coordinate used to locate the object(s) relative to the Base Center and Height Direction. It acts as the key point for any transformations to the pattern object(s). The Height Direction is the vector along which the cylinder runs. The Starting Height is the offset from the Base Center along the Height Direction that the pattern will place the Object Center.
|
||||
|
||||
.The user interface for building cylindrical patterns.
|
||||
image::../articles/images/build_pattern_fig06.png[]
|
||||
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
= Using the build_region Command
|
||||
Lee A Butler; Eric W Edwards; Dwayne L Kregel
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
Just as the Build Pattern tool can help automate the process of building multiple occurrences of objects, the build_region command can help automate the process of creating regions. The command (which currently has no graphical user interface equivalent) uses meaning assigned by the user in the primitive name based on the intended use of the primitive.
|
||||
|
||||
The user includes the Boolean operation and relational information in the name of the primitive using a simple naming convention. The naming convention is designed around the following two assumptions:
|
||||
|
||||
|
||||
* The same text "tag" is used for all primitives in a region.
|
||||
* A sequential numbering pattern is used.
|
||||
|
||||
For example, let's say we want to build the four rounded corners of a "tub" region for a toy metal wagon assembly (see Figure F-1). We could choose something such as "wgn"--an abbreviated form of "wagon"--as the tag. This tag is short, easy to type, and representative of the final assembly name. Our primitives would therefore be of the form wgn.s#.
|
||||
|
||||
[[build_region5]]
|
||||
.The rounded corners of a toy wagon.
|
||||
image::../articles/images/build_region_fig01.png[]
|
||||
|
||||
Next, we create an arb8 for one long side of the wagon tub. It is named wgn.s1. After that, we create an rcc for one corner of the tub. It is named wgn.s2. To get a hollow quarter cylinder, we need to subtract a cylinder and intersect a bounding box (see Figure F-2). In order to relate the subtraction and intersecting primitives with wgn.s2, they will each share the same root name, wgn.s2. The subtraction primitive will be named wgn.s2-1, and the intersecting primitive will be named wgn.s2+1.
|
||||
|
||||
[[build_region7]]
|
||||
.Arb8, cylinder, and two Boolean primitives.
|
||||
image::../articles/images/build_region_fig02.png[]
|
||||
|
||||
Now we have created the following four primitives:
|
||||
|
||||
|
||||
....
|
||||
|
||||
wgn.s1 wgn.s2 wgn.s2+1 wgn.s2-1
|
||||
|
||||
....
|
||||
|
||||
If we separate the primitives sequentially as follows,
|
||||
|
||||
|
||||
....
|
||||
|
||||
wgn.s1
|
||||
|
||||
wgn.s2 wgn.s2+1 wgn.s2-1,
|
||||
|
||||
....
|
||||
|
||||
we can begin to see the Boolean structure falling out of the naming convention
|
||||
|
||||
|
||||
....
|
||||
|
||||
u wgn.s1
|
||||
|
||||
u wgn.s2 + wgn.s2+1 - wgn.s2-1
|
||||
|
||||
....
|
||||
|
||||
If we wanted to make a second subtraction from wgn.s2--say, for a drain hole in the corner of the wagon--we would name that primitive wgn.s2-2, as shown in <<build_region9>>. We can break this name down as follows: the root name `wgn` identifies the region; `.s2` is the base solid the operation applies to; and the trailing `-2` marks this as the second subtraction from that solid (the first having been `wgn.s2-1`).
|
||||
|
||||
[[build_region9]]
|
||||
.The region and the subtraction primitives.
|
||||
image::../articles/images/build_region_fig03.png[]
|
||||
|
||||
Note that the root name stays the same so we can maintain the relationship, and the second number (associated with the Boolean operation) is incremented sequentially.
|
||||
|
||||
[[build_region11]]
|
||||
.Raytraced image with hole.
|
||||
image::../articles/images/build_region_fig04.png[]
|
||||
|
||||
Obviously, the overall success or failure of the build_region command depends on primitives being named properly. But if they are, the command can organize them in one automated step, creating complex regions in just a few keystrokes.
|
||||
|
||||
Another modeling benefit of the build_region tool is that it allows the user to quickly organize primitives. Assume, for example, that we have used the aforementioned naming convention to construct a complicated region. If there was a subsection of the region that we needed to, say, keep out for another assembly, delete from our database, move slightly, or copy, it would be a simple matter to create a new region with just those primitives that we needed.
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
= Camouflage shader
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
[[Introduction]]
|
||||
== Introduction
|
||||
|
||||
The "camo" shader creates a pseudo-random tri-color camouflage pattern on the object using a fractal noise pattern. This is a procedural shader based upon a fractal noise function known as fractional brownian motion or fBm.
|
||||
|
||||
The fractal noise function produces a pseudo- random number in the range [-1.0 ... 1.0] from the 3-space coordinates of a point in the bounding volume of the region. This noise value is used to determine the color of the object at the given location.
|
||||
|
||||
|
||||
|
||||
.Table 1
|
||||
[cols="2*"]
|
||||
|===
|
||||
|Noise Value
|
||||
|Object Color
|
||||
|
||||
|nv < thresh1
|
||||
|color 1
|
||||
|nv < thresh1 and nv < thresh2
|
||||
|color 2
|
||||
|nv > thresh2
|
||||
|color 3
|
||||
|===
|
||||
|
||||
|
||||
|
||||
The fractal pattern has infinite resolution. As a result, the borders of the color splashes never become pixelated, no mater how close the eyepoint is to the surface.
|
||||
|
||||
|
||||
|
||||
.Table 2
|
||||
[cols="3*"]
|
||||
|===
|
||||
|parameter
|
||||
|Abbreviation
|
||||
|Default Value
|
||||
3+|Noise Parameters
|
||||
|
||||
|lacunarity
|
||||
|l
|
||||
|2.1753974
|
||||
|H
|
||||
|H
|
||||
|1.0
|
||||
|octaves
|
||||
|o
|
||||
|4.0
|
||||
|size
|
||||
|s
|
||||
|1.0
|
||||
|vscale
|
||||
|v
|
||||
|1.0/1.0/1.0
|
||||
|delta
|
||||
|d
|
||||
|1000/1000/1000
|
||||
3+|*Shader Specific Parameters*
|
||||
|thresh1
|
||||
|t1
|
||||
|-0.25
|
||||
|thresh2
|
||||
|t2
|
||||
|0.25
|
||||
|color1
|
||||
|c1
|
||||
|97/74/41
|
||||
|color2
|
||||
|c2
|
||||
|26/77/10
|
||||
|color3
|
||||
|c3
|
||||
|38/38/38
|
||||
|===
|
||||
|
||||
|
||||
|
||||
*Lacunarity*
|
||||
|
||||
The grid on which the noise function is built is scaled by this value for each successive octave of noise which will be combined to produce the final result.
|
||||
|
||||
*Octaves*
|
||||
|
||||
The number of times the noise grid will be scaled and recombined to produce the final noise function
|
||||
|
||||
*Size, Vscale*
|
||||
|
||||
If *size* is set it is used as a scalar which defines the size of the noise grid on the object. So if t2=0.5 and size=5mm then splotches of color3 would tend to be no larger than 5-10mm. If non-uniform scaling is required, Vscale can specify the grid size in X, Y and Z.
|
||||
|
||||
*Delta*
|
||||
|
||||
This specifies a translation in noise space for the origin of region space. Since the origin of noise space is reflected 8 ways, it is undesirable to have that portion of noise space overlap with region space.
|
||||
|
||||
|
||||
[[Limitations]]
|
||||
== Limitations
|
||||
|
||||
Because of the continuous nature of the fractal noise space, it is impossible to get a splash of color1 directly adjacent to a splash of color3.
|
||||
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
= Using the Extruded Bitmap Primitive
|
||||
Lee A Butler; Eric W Edwards; Dwayne L Kregel
|
||||
:doctype: article
|
||||
:toc:
|
||||
:toclevels: 3
|
||||
|
||||
The extruded bitmap (ebm) primitive allows the user to make a three-dimensional (3-D) shape from a two-dimensional black-and-white image. This feature can be helpful when dealing with complex outlines, text, or other complicated shapes captured as images.
|
||||
|
||||
For example, the ebm could be used if one wanted to model 3-D letters, such as in a company name, onto the side of a simulated wall or building. Note also that the same image used for the projection can, with some extra processing, form the basis for the ebm (see Figures C-1-C-3).
|
||||
|
||||
[[ebm3]]
|
||||
.Example of the .bw image used for ebm.
|
||||
image::../articles/images/ebm_primitive_fig01.png[]
|
||||
|
||||
[[ebm4]]
|
||||
.Example of ebm.
|
||||
image::../articles/images/ebm_primitive_fig02.png[]
|
||||
|
||||
[[ebm5]]
|
||||
.Example of the ebm with projection shader added.
|
||||
image::../articles/images/ebm_primitive_fig03.png[]
|
||||
|
||||
To make an ebm, the image file must be a black and white (.bw) file. A .bw image is a grayscale raw image file with only one channel. Each pixel can be turned on or off, but it has no color data. As shown in Figures C-2 and C-3, the white part of the image may be extruded in a straight line in the +Z direction to whatever length the user specifies. Regardless of the complexity of the geometry, all of the extruded shapes form a single ebm primitive.
|
||||
|
||||
To enter an ebm in a database, the in command must be used. The arguments are as shown in the following example:
|
||||
|
||||
[[ebm8]]
|
||||
[cols="7*"]
|
||||
[%noheader]
|
||||
|===
|
||||
|in
|
||||
|sample.ebm
|
||||
|ebm
|
||||
|image.bw
|
||||
|600
|
||||
|800
|
||||
|1
|
||||
|Make a shape.
|
||||
|Name it sample.
|
||||
|Make it an ebm.
|
||||
|Use the image.bw image file.
|
||||
|The image is 600 pixels wide.
|
||||
|The image is 800 pixels high.
|
||||
|Extrude the shape 1 inch (or whatever working units are in effect at the time) in the +Z direction.
|
||||
|===
|
||||
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Points to Remember About the ebm
|
||||
* The ebm cannot be created with the make, create, or inside commands.
|
||||
* The desired width and height of the ebm are input as pixel values, but the extrusion distance can be expressed in any working units.
|
||||
* Extrusions are made in the +Z direction, although after an ebm is made, the shape can be rotated, translated, or scaled.
|
||||
* When extruded, all shapes form a single ebm primitive.
|
||||
|
||||
====
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
# gallery_manifest.cmake -- data table for the procedural geometry gallery.
|
||||
#
|
||||
# Pure-CMake data file consumed by generate_gallery.cmake. ALL per-demo
|
||||
# knowledge lives here so the generator stays generic (no `mged tops` parsing,
|
||||
# no platform branches).
|
||||
#
|
||||
# Each demo is one bracket-argument string in GALLERY_DEMO_<i>, with fields
|
||||
# separated by '|'. Bracket args ([=[ ... ]=]) preserve embedded quotes,
|
||||
# semicolons, and commas verbatim, so captions need no escaping. The caption
|
||||
# is the LAST field; the generator takes everything after the 9th '|' as the
|
||||
# caption (so semicolons in captions are safe).
|
||||
#
|
||||
# Fields (in order):
|
||||
# name image basename -> gallery_<name>.png
|
||||
# section group heading (drives .adoc sections, in first-seen order)
|
||||
# driver exec | stdin:<inputfile> | tomged | mgedcmd:<cmd>
|
||||
# exe target/binary basename (resolved via ensearch)
|
||||
# args argument template; @OUT@ = chosen .g path, @IN:<file>@ = input data path
|
||||
# gfile database to render: @OUT@ (the chosen .g) or @GLOB@ (lone *.g in workdir)
|
||||
# objects space-separated render objects
|
||||
# autoview space-separated objects for `-c "autoview ..."`, or empty
|
||||
# render ao (default, adds -c "set ambSamples=64") | noao
|
||||
# caption one-line description
|
||||
|
||||
set(GALLERY_DEMO_COUNT 61)
|
||||
|
||||
# ---- New demonstrations -----------------------------------------------------
|
||||
set(GALLERY_DEMO_0 [=[terragen|New demonstrations|exec|terragen|@OUT@|@OUT@|all|terrain.r water.r|ao|Fractal DSP terrain island with reflective water and a cloud environment-map sky; rendered with the new rt autoview command framing terrain+water.]=])
|
||||
set(GALLERY_DEMO_1 [=[voxelize|New demonstrations|exec|voxelize|@OUT@|@OUT@|all||ao|Demonstrates BRL-CAD's "vol" (3-D volume) and "ebm" (extruded bitmap) primitives by sampling a procedural 3-D scalar field (a triply-periodic gyroid by default) over a regular grid. It writes sidecar .vol/.ebm data files and builds an orange voxel isosurface (with a cutaway box) plus a blue extruded height-field companion.]=])
|
||||
set(GALLERY_DEMO_2 [=[lattice|New demonstrations|exec|lattice|@OUT@|@OUT@|all||ao|A full geodesic-sphere space-frame built by instancing one unit strut prototype across every de-duplicated geodesic edge, with joint spheres.]=])
|
||||
set(GALLERY_DEMO_3 [=[loftwing|New demonstrations|exec|loftwing|@OUT@|@OUT@|all||ao|A lofted NACA 4-digit airfoil wing (ARS) with taper, twist, sweep, and dihedral and a full root section.]=])
|
||||
set(GALLERY_DEMO_4 [=[loftwing_prop|New demonstrations|exec|loftwing|@OUT@ --mode prop|@OUT@|all||ao|Propeller mode of loftwing: one strongly twisted NACA blade instanced around a central hub to form a 3-blade propeller.]=])
|
||||
set(GALLERY_DEMO_5 [=[gears|New demonstrations|exec|gears|@OUT@|@OUT@|all|ground.r|ao|Builds a meshing involute spur-gear train, demonstrating the sketch->extrude procedural-modeling workflow in libwdb: each gear is one extruded involute tooth profile unioned in rotated copies around a hub with a central bore, laid left-to-right so the teeth interlock, plus a ground plane and a light under a top group "all".]=])
|
||||
set(GALLERY_DEMO_6 [=[helicoil|New demonstrations|exec|helicoil|@OUT@|@OUT@|all|coil.r|ao|Procedurally builds helical pipe solids (spring, screw, or DNA double helix) swept along a helix centerline via mk_pipe(); the default "spring" mode renders a chrome coil spring on a ground plane with a light, assembled into a top-level group "all".]=])
|
||||
set(GALLERY_DEMO_7 [=[specimen|New demonstrations|exec|specimen|@OUT@|@OUT@|all|ground.r|ao|Analytic-primitive specimen shelf (rpc, rhc, epa, ehy, hyp, eto, hrt, arbn, particle, tor, tgc, ell); rt autoview frames the shelf.]=])
|
||||
set(GALLERY_DEMO_59 [=[seashell|New demonstrations|exec|seashell|@OUT@|@OUT@|all||ao|A shelf of procedurally grown seashells. Each shell is one watertight BoT solid: a superformula generating curve (the aperture cross-section) is swept along a logarithmic helico-spiral, with the coil radius, axial rise, and cross-section all scaling by the same exponential growth factor per whorl -- the self-similar "gnomonic" growth a real mollusk uses -- so successive whorls nest without intersecting. Four species (a planispiral nautilus, a rounded-pentagon-mouthed conch, a tall fluted turret/auger, and a round snail) come from one parametric model, each with analytically smoothed vertex normals and rounded, tapered ends.]=])
|
||||
set(GALLERY_DEMO_60 [=[seashell_nautilus|New demonstrations|exec|seashell|@OUT@ --mode nautilus|@OUT@|all||ao|Single hero shell from the seashell generator: a pearly planispiral nautilus. The logarithmic-spiral sweep of a growing elliptical aperture reproduces the classic equiangular whorl, closed into a ray-traceable BoT solid with smooth shading.]=])
|
||||
|
||||
# ---- Fractals & recursion ---------------------------------------------------
|
||||
set(GALLERY_DEMO_8 [=[sphflake|Fractals & recursion|exec|sphflake|-d 3 -f @OUT@|@OUT@|scene.r|depth0.r depth1.r depth2.r depth3.r|ao|Recursive mirror-sphere flake fractal; rendered with rt autoview framing the flake (depth0-3.r) over a checkered plane.]=])
|
||||
set(GALLERY_DEMO_9 [=[donuts|Fractals & recursion|exec|donuts|-o @OUT@|@OUT@|scene.r|depth0.r depth1.r depth2.r depth3.r|ao|Recursive torus "donut flake" fractal; rendered with rt autoview framing the flake regions.]=])
|
||||
set(GALLERY_DEMO_10 [=[menger|Fractals & recursion|exec|menger|-o @OUT@|@OUT@|menger|sponge.r|ao|A Menger sponge fractal carved from a cube with the recursive exterior (subtractive) pattern, on a ground plane with two lights.]=])
|
||||
set(GALLERY_DEMO_11 [=[pyramid|Fractals & recursion|exec|pyramid|5|@GLOB@|tree||ao|Generates a recursive 3-D Sierpinski-style pyramid built from ARB4 tetrahedra, subdividing each pyramid into 4 smaller ones per level (inspired by Glassner's SigGraph paper).]=])
|
||||
set(GALLERY_DEMO_12 [=[torii|Fractals & recursion|exec|torii|@OUT@|@OUT@|all||ao|An interwoven chain-mail weave of interlocking torii with a radial gradient of tube thickness (and color). Adjacent rings thread each other's holes without the solid tubes ever intersecting (verified 0 overlaps), so the whole sheet is a single, articulating, fully 3D-printable piece of mail.]=])
|
||||
|
||||
# ---- Architecture & structural ----------------------------------------------
|
||||
set(GALLERY_DEMO_13 [=[masonry_frame|Architecture & structural|exec|masonry|-t frame -u ft -w 12,8 -o 3,0,5,7 -n wall|@GLOB@|r.wall.studs||ao|masonry wall generator, wood-frame wall type: studs, plates, and framing around a window opening.]=])
|
||||
set(GALLERY_DEMO_14 [=[masonry_sheetrock|Architecture & structural|exec|masonry|-t sheetrock -u ft -w 12,8 -o 3,0,5,7 -n wall|@GLOB@|r.wall.sr1||ao|masonry wall generator, sheetrock wall type.]=])
|
||||
set(GALLERY_DEMO_15 [=[masonry_brick|Architecture & structural|exec|masonry|-t brick -u in -w 96,48 -n wall|@GLOB@|r.wall.b||ao|masonry wall generator, brick wall type (prototype brick).]=])
|
||||
set(GALLERY_DEMO_16 [=[masonry_bm|Architecture & structural|exec|masonry|-t bm -u in -w 96,48 -m 0.25 -n wall|@GLOB@|r.wall.b||ao|masonry wall generator, mortar-brick wall type: brick with horizontal and vertical mortar joints.]=])
|
||||
set(GALLERY_DEMO_17 [=[brickwall|Architecture & structural|tomged|brickwall||@OUT@|g.brick||ao|Builds a brick wall: emits mged commands that create RPP brick solids arranged in rows (with optional mortar slabs between them) to fill a specified wall width and height. Output is a stream of mged commands on stdout, not a .g directly.]=])
|
||||
set(GALLERY_DEMO_18 [=[mkbuilding|Architecture & structural|exec|mkbuilding|@OUT@|@OUT@|house||ao|Generates a physically dimensioned building with material-separated walls, slabs, framed openings, roof, and optional structural members; JSON, OSM, and CityJSON specifications can produce full building catalogs.]=])
|
||||
set(GALLERY_DEMO_19 [=[cchannel|Architecture & structural|exec|cchannel|-f @OUT@ -H 0.2|@OUT@|channel.r||ao|Creates a section of fully configurable C-channel (structural metal beam). Default is a 1" diameter by 12" long section of American standard C-channel, here generated with a row of drilled holes.]=])
|
||||
set(GALLERY_DEMO_20 [=[ringworld|Architecture & structural|exec|ringworld|-o @OUT@|@OUT@|all.g||ao|Generates a "ringworld" as imagined by Larry Niven: a central sun sphere and a large CSG ring (built from three RCCs) orbiting it, combined into a top-level group all.g.]=])
|
||||
|
||||
# ---- Organic, molecular & scenery -------------------------------------------
|
||||
set(GALLERY_DEMO_21 [=[vegetation|Organic, molecular & scenery|exec|vegetation|@OUT@ 20 30000 300 0.1 42|@GLOB@|plant.r||ao|Procedurally generates plant-like geometry (trees/shrubbery) from particle primitives built recursively with random branching and growth parameters, including an optional repeatability seed.]=])
|
||||
set(GALLERY_DEMO_22 [=[clutter|Organic, molecular & scenery|exec|clutter||@GLOB@|clut||ao|Generates procedural "clutter" made of primitive geometric objects: a grid of detail cells on a ground plane, each holding a random stack of spheres, crystals, or mixed primitives (boxes, cylinders, cones, ellipsoids), all enclosed by concentric torus rings and lit by four corner lights.]=])
|
||||
set(GALLERY_DEMO_23 [=[metaball|Organic, molecular & scenery|exec|metaball|-o @OUT@|@OUT@|meatballs.r||ao|Programmatically creates and combines metaball ("blobby") primitives: it generates three sets of randomly-placed iso-method metaballs via libwdb, then reads them back and merges all their points into one combined "mega metaball" via librt.]=])
|
||||
set(GALLERY_DEMO_24 [=[molecule|Organic, molecular & scenery|stdin:mol-cube.dat|molecule|Cube|@GLOB@|molecule||ao|Ball-and-stick molecule (spheres for atoms, cylinders for bonds) read from a G. Adams .dat file -- here a bonded cube of atoms with a central hub.]=])
|
||||
set(GALLERY_DEMO_25 [=[pdb-g|Organic, molecular & scenery|exec|pdb-g|@IN:caffeine.pdb@ @OUT@|@OUT@|all_atoms.r||ao|Reads a Protein Data Bank (PDB) text file and converts each atom into a 1mm-radius sphere, grouping them into a single combination to produce a BRL-CAD geometry database of the molecule (caffeine).]=])
|
||||
|
||||
# ---- Mechanical & engineering -----------------------------------------------
|
||||
set(GALLERY_DEMO_26 [=[pipe|Mechanical & engineering|stdin:pipe.stdin|pipe|-t demo @OUT@|@OUT@|demo.pipe demo.fluid||ao|Generates piping (fuel/hydraulic lines, etc.) in MGED format from a routed sequence of 3D points, building both tubing regions and inner fluid regions, with automatically generated elbow regions wherever the pipe changes direction.]=])
|
||||
set(GALLERY_DEMO_27 [=[pipetest|Mechanical & engineering|exec|pipetest||@GLOB@|p1 p2 p3 pipe1||ao|Generates a test database of pipe and particle primitives: three particle solids (spherical, cylindrical, and conical) plus a multi-segment straight pipe and a bent pipe traced around a cube's faces.]=])
|
||||
set(GALLERY_DEMO_28 [=[tube|Mechanical & engineering|stdin:tube.stdin|tube||@GLOB@|g0||ao|Generates a gun-tube (cannon barrel) as a procedural spline/cylinder whose core lies on the X axis, optionally deformed per-frame from projectile firing data. With no stdin data it emits the static frame-0 geometry from a built-in center-of-mass table.]=])
|
||||
set(GALLERY_DEMO_29 [=[lens|Mechanical & engineering|exec|lens|@OUT@|@OUT@|lens_DCX_f600.0_d200.0.r||ao|Generates basic optical lenses (plano/double convex or concave) by using the lensmaker's equation to derive the geometry from inputs like type, diameter, focal length, refractive index, and thickness.]=])
|
||||
|
||||
# ---- NURBS, B-rep, splines & surfaces ---------------------------------------
|
||||
set(GALLERY_DEMO_30 [=[brep_simple|NURBS, B-rep, splines & surfaces|exec|brep_simple||@GLOB@|cube.r||ao|Creates a single twisted-cube B-Rep solid directly via the openNURBS API (8 vertices, 12 edges, 6 faces) and writes it to a BRL-CAD database, demonstrating NURBS B-Rep construction.]=])
|
||||
set(GALLERY_DEMO_31 [=[brep_cube|NURBS, B-rep, splines & surfaces|exec|brep_cube||@GLOB@|cube.r||ao|Creates a twisted-cube B-Rep solid (8 vertices, 12 edges, 6 faces) by directly using the openNURBS API, then writes it to a BRL-CAD database. Copied almost verbatim from the openNURBS example_brep.cpp to explore B-Rep creation.]=])
|
||||
set(GALLERY_DEMO_32 [=[brep_cobb|NURBS, B-rep, splines & surfaces|exec|brep_cobb|@OUT@|@OUT@|cobb.r||ao|A Cobb NURBS unit sphere tiled with six rational Bezier patches.]=])
|
||||
set(GALLERY_DEMO_33 [=[brep_surface|NURBS, B-rep, splines & surfaces|exec|brep_surface|-H 1.0|@GLOB@|brep_surface.r||ao|Creates a single plate-mode NURBS (B-Rep) surface with a given thickness, defined by four control points, and writes it as a region to a .g database.]=])
|
||||
set(GALLERY_DEMO_34 [=[brep_trimmed|NURBS, B-rep, splines & surfaces|exec|brep_trimmed||@GLOB@|brep_trimmed.r||ao|Generates a single B-rep NURBS surface (a flat 10x10 square patch) with both an outer trimming loop and an interior rectangular trim/hole, demonstrating ON_Brep construction of trimmed surfaces.]=])
|
||||
set(GALLERY_DEMO_35 [=[brep_invalid|NURBS, B-rep, splines & surfaces|exec|brep_invalid||@GLOB@|brep_invalid.r||ao|Creates a single trimmed NURBS B-rep surface (one face of a Cobb sphere) with a deliberately invalid inner trim loop, to test/demonstrate handling of invalid trim geometry.]=])
|
||||
set(GALLERY_DEMO_36 [=[breplicator|NURBS, B-rep, splines & surfaces|exec|breplicator||@GLOB@|brep||ao|breplicator is a test tool for the BREP (boundary representation) primitive in librt; it builds a single closed 6-faced NURBS solid (an arb8-shaped box) via mk_brep() and writes it to a database.]=])
|
||||
set(GALLERY_DEMO_37 [=[csgbrep|NURBS, B-rep, splines & surfaces|exec|csgbrep||@GLOB@|all.g||ao|A reference gallery of CSG/implicit primitives, each also converted to a brep, grouped under a single top object.]=])
|
||||
set(GALLERY_DEMO_38 [=[surfaceintersect|NURBS, B-rep, splines & surfaces|exec|surfaceintersect|@OUT@|@OUT@|all||ao|Writes the two twisted-cube NURBS B-rep surfaces (red and blue). The experimental surface-surface intersection is behind a -x flag (off by default, as it currently crashes).]=])
|
||||
set(GALLERY_DEMO_39 [=[spltest|NURBS, B-rep, splines & surfaces|exec|spltest|@OUT@|@OUT@|spltest||ao|A NURBS spline test: a valid order-2 B-spline surface built from a 3x3 control mesh with a gently lifted center.]=])
|
||||
set(GALLERY_DEMO_40 [=[tea|NURBS, B-rep, splines & surfaces|exec|tea||@GLOB@|UtahTeapot||ao|Converts the Utah Teapot description from the IEEE CG&A database into BRL-CAD spline (NURBS) format, producing the classic closed-bottom teapot as a B-spline solid.]=])
|
||||
set(GALLERY_DEMO_41 [=[wavy|NURBS, B-rep, splines & surfaces|exec|wavy||@GLOB@|wavy||ao|Creates a random wavy surface modeled as a B-spline (NURBS) surface, generating a 10x10 grid of points with randomized height and interpolating them into a spline solid.]=])
|
||||
set(GALLERY_DEMO_42 [=[kurt|NURBS, B-rep, splines & surfaces|exec|kurt||@GLOB@|all||ao|Builds a surface from a multi-valued cubic function sampled over an 18x18 grid, triangulated into a BoT height-field sheet.]=])
|
||||
set(GALLERY_DEMO_43 [=[sketch|NURBS, B-rep, splines & surfaces|exec|sketch||@GLOB@|all||noao|Builds a 2D sketch (line/arc/bezier segments) and extrudes it into a renderable solid via mk_extrusion.]=])
|
||||
|
||||
# ---- Primitives, BoT & API basics -------------------------------------------
|
||||
set(GALLERY_DEMO_44 [=[wdb_example|Primitives, BoT & API basics|exec|wdb_example|@OUT@|@OUT@|box_n_ball.r||ao|Demonstrates creating a BRL-CAD geometry database from C code using the libwdb API: it writes a sphere (ball.s) and an rpp/box (box.s), then unions them into a green plastic region named box_n_ball.r.]=])
|
||||
set(GALLERY_DEMO_45 [=[globe|Primitives, BoT & API basics|exec|globe|@OUT@|@OUT@|globe.r land.c||ao|Creates a set of concentric spherical "shells" (like an onion) that together form a unified solid sphere: a green solid land core surrounded by progressively transparent blue air layers.]=])
|
||||
set(GALLERY_DEMO_46 [=[bottest|Primitives, BoT & API basics|exec|bottest|@OUT@|@OUT@|bot_u_surf bot_ccw_surf bot_cw_surf bot_u_solid bot_ccw_solid bot_cw_solid bot_u_plate bot_ccw_plate bot_cw_plate bot_solid_dup_vs bot_solid_dup_fs||ao|Generates a set of test BOT (Bag of Triangles) solids in a .g database, covering every BOT mode/orientation combination: surface, solid, and plate types in unoriented/CCW/CW orientations, plus BOTs with duplicate vertices and faces for fuse/condense testing.]=])
|
||||
set(GALLERY_DEMO_47 [=[pix2g|Primitives, BoT & API basics|exec|pix2g|@IN:moss64.pix@ @OUT@ 64 64|@OUT@|image.c||ao|pix2g generates geometry from a pixmap (.pix) image: it creates one colored sphere per pixel arranged on a grid, where each sphere's color matches the corresponding pixel's RGB value, producing a 3D point-cloud rendition of the image.]=])
|
||||
|
||||
# ---- src/shapes -- parametric shape generators ------------------------------
|
||||
set(GALLERY_DEMO_48 [=[bolt|src/shapes -- parametric shape generators|exec|bolt|-o3 -fbolt.g -n1 -hd30 -hh20 -wd45 -wh4 -sd14 -sh90|@GLOB@|bolta||ao|bolt is a BRL-CAD libwdb program that creates a bolt (in mm). It can build four types: a bolt head, head + washer, head + washer + stem, or head + stem. The head is a hex (two arb8 solids), the washer and stem are RCCs.]=])
|
||||
set(GALLERY_DEMO_49 [=[coil|src/shapes -- parametric shape generators|mgedcmd:coil mycoil|coil||@OUT@|mycoil||ao|Coil Generator -- a program to create coils (helical springs) using the BRL-CAD pipe primitive.]=])
|
||||
set(GALLERY_DEMO_50 [=[fence|src/shapes -- parametric shape generators|exec|fence|-o @OUT@ -L 2000 -N 1200 -j 400 -R 30 -r 5 -a 30 -c "70 90 110"|@OUT@|fence.r||ao|A chain-link fence generator. Every parameter (height, length, pole radius/spacing, wire radius, mesh twist angle, materials/colors) can be adjusted; it builds vertical RCC poles plus a woven zig-zag wire mesh between them.]=])
|
||||
set(GALLERY_DEMO_51 [=[gastank|src/shapes -- parametric shape generators|exec|gastank|-fgastank.g -n1 -H800 -w1200 -d500 -r120|@GLOB@|tnka||ao|A solid gas tank with all edges and corners rounded, composed of 3 arb8s, 8 spheres, and 12 cylinders, centered at the origin (dimensions in mm). Introduced in BRL-CAD release 4.4.]=])
|
||||
set(GALLERY_DEMO_52 [=[handle|src/shapes -- parametric shape generators|exec|handle|-fhandle.g -n1 -l200 -H120 -r130 -r215|@GLOB@|hana||ao|handle is a BRL-CAD libwdb sample program that constructs a handle (in millimeters) from three cylinders, two tori, and two arb8s, with its base centered at (0,0,0) and its height extending in the +Z direction. Introduced in BRL-CAD release 4.4.]=])
|
||||
set(GALLERY_DEMO_53 [=[human|src/shapes -- parametric shape generators|exec|human|-A -n Body|@GLOB@|Body||ao|Generator for human models based on height (and other anthropometric parameters). It procedurally builds an articulated humanoid body assembled from primitives (head, neck, torso, arms with shoulder/elbow/wrist joints, hands, thighs/calves with knee joints, and feet), defaulting to a standing 50th-percentile man.]=])
|
||||
set(GALLERY_DEMO_54 [=[picket_fence|src/shapes -- parametric shape generators|exec|picket_fence|@OUT@ fence_ 1000 30 0 0 0 3000 0 0 4500 2000 0|@OUT@|fence_sec0.c fence_sec1.c||ao|picket_fence builds a wooden picket fence: vertical pointed-top pickets (arb8 posts with wedge-cut tops) joined by two horizontal stringer rails, laid out along a sequence of x/y/z waypoints so the fence can follow a multi-segment path. Rendered as brown plastic pickets with two rails across two fence sections.]=])
|
||||
set(GALLERY_DEMO_55 [=[tire|src/shapes -- parametric shape generators|mgedcmd:tire|tire||@OUT@|tire-215-55R17||ao|tire is BRL-CAD's Tire Generator, a program to create basic tire shapes (with an optional wheel). The rendered model is a default ISO 215/55R17 passenger tire mounted on a wheel hub.]=])
|
||||
set(GALLERY_DEMO_56 [=[window|src/shapes -- parametric shape generators|exec|window|-fwindow.g -n1 -H1618 -w1000 -d100 -r80|@GLOB@|wina||ao|window constructs a window with all edges and corners rounded, composed of two arb8s and four cylinders, built using libwdb in millimeters. The front of the window is centered at the origin and extends in the negative X-direction by the window depth.]=])
|
||||
set(GALLERY_DEMO_57 [=[window_frame|src/shapes -- parametric shape generators|exec|window_frame|-fwindow_frame.g -n1 -H1618 -w1000 -d100 -r80 -i120|@GLOB@|wfra||ao|window_frame constructs a window frame with all edges and corners rounded, composed of 4 arb8s and 8 cylinders (in millimeters). The front of the frame is centered at the origin and extends in the negative x-direction by its depth.]=])
|
||||
set(GALLERY_DEMO_58 [=[wire|src/shapes -- parametric shape generators|stdin:wire.stdin|wire||@GLOB@|wires||ao|wire creates wiring or fuel lines from user-supplied endpoint coordinates and line radii. It builds a continuous tube as a chain of truncated cones (segments) joined by spheres at the vertices, grouped under a "wires" combination -- here a four-turn helix.]=])
|
||||
|
||||
# ---- Not rendered (documented in "Known limitations", no image) -------------
|
||||
set(GALLERY_NR_COUNT 3)
|
||||
set(GALLERY_NR_0 [=[nmgmodel|Intentionally non-manifold NMG exercising 3-, 2-, 1-, and 0-manifold features (a holed/voided block plus dangling faces, wires, and a lone vertex). It generates valid geometry, but the libnmg raytracer aborts on it (BU_ASSERT in isect.c), so it cannot be raytraced.]=])
|
||||
set(GALLERY_NR_1 [=[tea_nmg|Utah teapot as a t-NURBS NMG (closed bottom). The vertex-fuse fix lets it write geometry, but rt aborts importing the t-NURBS NMG (NMG_CK_DISKMAGIC) -- a librt limitation with t-NURBS NMG, not a usage issue.]=])
|
||||
set(GALLERY_NR_2 [=[gtimes|A ray-trace/database timing benchmark: it opens an existing .g repeatedly and prints timings for db_open, db_dirbuild, db_update_nref, tops, and db_close. It produces no geometry.]=])
|
||||
@@ -1,294 +0,0 @@
|
||||
# generate_gallery.cmake -- regenerate the procedural geometry gallery snapshot.
|
||||
#
|
||||
# Run via: cmake -DRT=... -DMGED=... -DBINDIR=... -DMANIFEST=... -DIMGDIR=...
|
||||
# -DADOC=... -DINPUTDIR=... -DWORKDIR=... -DSIZE=512
|
||||
# -DTITLE=... -P generate_gallery.cmake
|
||||
#
|
||||
# Drives every demo (manifest row) to produce a .g, ray traces it to a 512px
|
||||
# PNG with rt, and emits the AsciiDoc article. Cross-platform: uses only
|
||||
# cmake / execute_process / file / string -- no bash, cmd, python, or shell.
|
||||
# Tool argv is passed directly (no shell), so quoting bugs are impossible.
|
||||
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
# ---- required inputs --------------------------------------------------------
|
||||
foreach(v RT MGED MANIFEST IMGDIR ADOC INPUTDIR WORKDIR)
|
||||
if(NOT DEFINED ${v})
|
||||
message(FATAL_ERROR "generate_gallery: -D${v}=... is required")
|
||||
endif()
|
||||
endforeach()
|
||||
if(NOT DEFINED SIZE)
|
||||
set(SIZE 512)
|
||||
endif()
|
||||
if(NOT DEFINED TITLE)
|
||||
set(TITLE "BRL-CAD Procedural Geometry Gallery")
|
||||
endif()
|
||||
if(NOT DEFINED BINDIR)
|
||||
get_filename_component(BINDIR "${RT}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
set(GEN_TIMEOUT 300) # seconds for a single geometry-generation step
|
||||
set(RENDER_TIMEOUT 1800) # seconds for a single rt render
|
||||
|
||||
include("${MANIFEST}")
|
||||
|
||||
file(MAKE_DIRECTORY "${WORKDIR}")
|
||||
file(MAKE_DIRECTORY "${IMGDIR}")
|
||||
|
||||
# ---- helpers ----------------------------------------------------------------
|
||||
|
||||
# Split a |-delimited record into D_name D_section D_driver D_exe D_args
|
||||
# D_gfile D_objects D_autoview D_render D_caption. Caption (last field) is the
|
||||
# verbatim remainder, so embedded semicolons/commas are preserved.
|
||||
function(parse_demo rec)
|
||||
set(remaining "${rec}")
|
||||
foreach(fn name section driver exe args gfile objects autoview render)
|
||||
string(FIND "${remaining}" "|" p)
|
||||
if(p LESS 0)
|
||||
set(D_${fn} "${remaining}" PARENT_SCOPE)
|
||||
set(remaining "")
|
||||
else()
|
||||
string(SUBSTRING "${remaining}" 0 ${p} v)
|
||||
set(D_${fn} "${v}" PARENT_SCOPE)
|
||||
math(EXPR np "${p} + 1")
|
||||
string(SUBSTRING "${remaining}" ${np} -1 remaining)
|
||||
endif()
|
||||
endforeach()
|
||||
set(D_caption "${remaining}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Locate a demo executable by basename in BINDIR (handles the .exe suffix).
|
||||
function(resolve_exe name outvar)
|
||||
foreach(cand "${name}" "${name}.exe")
|
||||
if(EXISTS "${BINDIR}/${cand}")
|
||||
set(${outvar} "${BINDIR}/${cand}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endforeach()
|
||||
set(${outvar} "" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Substitute @OUT@ and @IN:<file>@ tokens in a single argv element. @OUT@ is
|
||||
# substituted as a RELATIVE filename (the demo runs with WORKING_DIRECTORY set
|
||||
# to its work dir), so legacy generators with small fixed-size filename buffers
|
||||
# do not truncate a long absolute path. @IN: paths stay absolute.
|
||||
function(subst_tokens tok outrel outvar)
|
||||
if(tok MATCHES "^@IN:(.+)@$")
|
||||
set(${outvar} "${INPUTDIR}/${CMAKE_MATCH_1}" PARENT_SCOPE)
|
||||
else()
|
||||
string(REPLACE "@OUT@" "${outrel}" tok "${tok}")
|
||||
set(${outvar} "${tok}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# ---- main loop --------------------------------------------------------------
|
||||
|
||||
set(SECTION_ORDER "") # ordered unique list of section names (no ';' in names)
|
||||
set(N_OK 0)
|
||||
set(N_FAIL 0)
|
||||
set(FAILED "")
|
||||
|
||||
math(EXPR LAST "${GALLERY_DEMO_COUNT} - 1")
|
||||
foreach(i RANGE 0 ${LAST})
|
||||
parse_demo("${GALLERY_DEMO_${i}}")
|
||||
|
||||
set(wd "${WORKDIR}/${D_name}")
|
||||
file(REMOVE_RECURSE "${wd}")
|
||||
file(MAKE_DIRECTORY "${wd}")
|
||||
set(out_rel "${D_name}.g") # relative name passed to demo args (@OUT@)
|
||||
set(outg "${wd}/${out_rel}") # absolute path for gfile resolution / mged
|
||||
|
||||
resolve_exe("${D_exe}" exepath)
|
||||
if(NOT exepath)
|
||||
message(WARNING "[${D_name}] executable '${D_exe}' not found in ${BINDIR} -- skipping")
|
||||
list(APPEND FAILED "${D_name} (no exe)")
|
||||
math(EXPR N_FAIL "${N_FAIL} + 1")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
# Build the resolved argv list (quotes respected, tokens substituted).
|
||||
separate_arguments(rawargs UNIX_COMMAND "${D_args}")
|
||||
set(finalargs "")
|
||||
foreach(tok ${rawargs})
|
||||
subst_tokens("${tok}" "${out_rel}" rtok)
|
||||
list(APPEND finalargs "${rtok}")
|
||||
endforeach()
|
||||
|
||||
# ---- run the generator step by driver -------------------------------------
|
||||
set(rc 0)
|
||||
set(genout "")
|
||||
if(D_driver STREQUAL "exec")
|
||||
execute_process(
|
||||
COMMAND "${exepath}" ${finalargs}
|
||||
WORKING_DIRECTORY "${wd}" TIMEOUT ${GEN_TIMEOUT}
|
||||
RESULT_VARIABLE rc OUTPUT_VARIABLE genout ERROR_VARIABLE genout)
|
||||
elseif(D_driver MATCHES "^stdin:(.+)$")
|
||||
set(infile "${INPUTDIR}/${CMAKE_MATCH_1}")
|
||||
execute_process(
|
||||
COMMAND "${exepath}" ${finalargs}
|
||||
WORKING_DIRECTORY "${wd}" TIMEOUT ${GEN_TIMEOUT}
|
||||
INPUT_FILE "${infile}"
|
||||
RESULT_VARIABLE rc OUTPUT_VARIABLE genout ERROR_VARIABLE genout)
|
||||
elseif(D_driver STREQUAL "tomged")
|
||||
# capture exe stdout (mged command stream), then pipe into mged
|
||||
execute_process(
|
||||
COMMAND "${exepath}" ${finalargs}
|
||||
WORKING_DIRECTORY "${wd}" TIMEOUT ${GEN_TIMEOUT}
|
||||
OUTPUT_FILE "${wd}/cmds.mged" ERROR_VARIABLE genout RESULT_VARIABLE rc)
|
||||
if(rc EQUAL 0)
|
||||
execute_process(
|
||||
COMMAND "${MGED}" -c "${outg}"
|
||||
WORKING_DIRECTORY "${wd}" TIMEOUT ${GEN_TIMEOUT}
|
||||
INPUT_FILE "${wd}/cmds.mged" OUTPUT_VARIABLE genout ERROR_VARIABLE genout
|
||||
RESULT_VARIABLE rc)
|
||||
endif()
|
||||
elseif(D_driver MATCHES "^mgedcmd:(.+)$")
|
||||
set(gedcmd "${CMAKE_MATCH_1}")
|
||||
file(WRITE "${wd}/cmds.mged" "${gedcmd}\nq\n")
|
||||
execute_process(
|
||||
COMMAND "${MGED}" -c "${outg}"
|
||||
WORKING_DIRECTORY "${wd}" TIMEOUT ${GEN_TIMEOUT}
|
||||
INPUT_FILE "${wd}/cmds.mged" OUTPUT_VARIABLE genout ERROR_VARIABLE genout
|
||||
RESULT_VARIABLE rc)
|
||||
else()
|
||||
message(WARNING "[${D_name}] unknown driver '${D_driver}' -- skipping")
|
||||
list(APPEND FAILED "${D_name} (bad driver)")
|
||||
math(EXPR N_FAIL "${N_FAIL} + 1")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
# ---- resolve the database to render ---------------------------------------
|
||||
if(D_gfile STREQUAL "@OUT@")
|
||||
set(gpath "${outg}")
|
||||
elseif(D_gfile STREQUAL "@GLOB@")
|
||||
file(GLOB gg "${wd}/*.g")
|
||||
list(LENGTH gg ng)
|
||||
if(ng EQUAL 0)
|
||||
set(gpath "")
|
||||
else()
|
||||
list(GET gg 0 gpath)
|
||||
if(ng GREATER 1)
|
||||
message(WARNING "[${D_name}] ${ng} .g files in workdir; using ${gpath}")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
set(gpath "${wd}/${D_gfile}")
|
||||
endif()
|
||||
|
||||
if(NOT gpath OR NOT EXISTS "${gpath}")
|
||||
message(WARNING "[${D_name}] generation failed (rc=${rc}, no .g). Output:\n${genout}")
|
||||
list(APPEND FAILED "${D_name} (no .g)")
|
||||
math(EXPR N_FAIL "${N_FAIL} + 1")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
# ---- render with rt -------------------------------------------------------
|
||||
set(imgpath "${IMGDIR}/gallery_${D_name}.png")
|
||||
file(REMOVE "${imgpath}") # rt refuses to overwrite an existing -o target
|
||||
|
||||
set(rtcmd "${RT}" "-s${SIZE}")
|
||||
if(NOT D_render STREQUAL "noao")
|
||||
list(APPEND rtcmd -c "set ambSamples=64")
|
||||
endif()
|
||||
if(NOT D_autoview STREQUAL "")
|
||||
list(APPEND rtcmd -c "autoview ${D_autoview}")
|
||||
endif()
|
||||
list(APPEND rtcmd -A1 -o "${imgpath}" "${gpath}")
|
||||
separate_arguments(objlist UNIX_COMMAND "${D_objects}")
|
||||
foreach(o ${objlist})
|
||||
list(APPEND rtcmd "${o}")
|
||||
endforeach()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${rtcmd}
|
||||
WORKING_DIRECTORY "${wd}" TIMEOUT ${RENDER_TIMEOUT}
|
||||
RESULT_VARIABLE rc OUTPUT_VARIABLE rtout ERROR_VARIABLE rtout)
|
||||
|
||||
set(ok FALSE)
|
||||
if(EXISTS "${imgpath}")
|
||||
file(SIZE "${imgpath}" isz)
|
||||
if(isz GREATER 3000)
|
||||
set(ok TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ok)
|
||||
message(STATUS "[${D_name}] rendered ${imgpath} (${isz} bytes)")
|
||||
math(EXPR N_OK "${N_OK} + 1")
|
||||
else()
|
||||
message(WARNING "[${D_name}] rt render failed (rc=${rc}). Output:\n${rtout}")
|
||||
list(APPEND FAILED "${D_name} (render)")
|
||||
math(EXPR N_FAIL "${N_FAIL} + 1")
|
||||
endif()
|
||||
|
||||
# ---- stash result for adoc emission ---------------------------------------
|
||||
set(R_${i}_name "${D_name}")
|
||||
set(R_${i}_section "${D_section}")
|
||||
set(R_${i}_caption "${D_caption}")
|
||||
set(R_${i}_ok "${ok}")
|
||||
if(NOT D_section IN_LIST SECTION_ORDER)
|
||||
list(APPEND SECTION_ORDER "${D_section}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# ---- emit the AsciiDoc article ---------------------------------------------
|
||||
|
||||
set(AO_LINE "rt -s${SIZE} -c \"set ambSamples=64\" [-c \"autoview <objs>\"] -A1 -o <name>.png <db>.g <objects>")
|
||||
|
||||
set(adoc "= ${TITLE}\n")
|
||||
string(APPEND adoc ":doctype: article\n")
|
||||
string(APPEND adoc ":toc:\n")
|
||||
string(APPEND adoc ":toclevels: 2\n")
|
||||
string(APPEND adoc "\n")
|
||||
string(APPEND adoc "This gallery shows the procedural-geometry demonstration programs in BRL-CAD's\n")
|
||||
string(APPEND adoc "`src/proc-db` and `src/shapes` directories. Each model is built from source by its\n")
|
||||
string(APPEND adoc "generator program and then ray traced with `rt` -- no hand modeling. The renders are\n")
|
||||
string(APPEND adoc "auto-framed and auto-lit by the ray tracer using ambient occlusion:\n")
|
||||
string(APPEND adoc "\n----\n${AO_LINE}\n----\n")
|
||||
string(APPEND adoc "\n")
|
||||
string(APPEND adoc "Some renders use the `rt -c \"autoview <objs>\"` command to frame a sub-scene (for\n")
|
||||
string(APPEND adoc "example, to exclude a distant light source from the view).\n")
|
||||
string(APPEND adoc "\n")
|
||||
string(APPEND adoc "NOTE: This article and its images are a committed snapshot. Developers can regenerate\n")
|
||||
string(APPEND adoc "them from the built tools by configuring with `-DBRLCAD_GENERATE_GALLERY=ON` and\n")
|
||||
string(APPEND adoc "building the `procedural-gallery-snapshot` target.\n")
|
||||
|
||||
foreach(sec ${SECTION_ORDER})
|
||||
string(APPEND adoc "\n== ${sec}\n\n")
|
||||
string(APPEND adoc "[cols=\"1,3\"]\n[%noheader]\n|===\n")
|
||||
foreach(i RANGE 0 ${LAST})
|
||||
if(DEFINED R_${i}_ok AND R_${i}_ok AND R_${i}_section STREQUAL sec)
|
||||
set(nm "${R_${i}_name}")
|
||||
string(APPEND adoc "|image:images/gallery_${nm}.png[${nm},${SIZE}]\n")
|
||||
string(APPEND adoc "|*${nm}*: ${R_${i}_caption}\n")
|
||||
endif()
|
||||
endforeach()
|
||||
string(APPEND adoc "|===\n")
|
||||
endforeach()
|
||||
|
||||
# Known limitations
|
||||
if(DEFINED GALLERY_NR_COUNT AND GALLERY_NR_COUNT GREATER 0)
|
||||
string(APPEND adoc "\n== Known limitations\n\n")
|
||||
string(APPEND adoc "A few programs are part of the source tree but are not shown above, because the\n")
|
||||
string(APPEND adoc "geometry they produce cannot be ray traced in the current tree:\n\n")
|
||||
math(EXPR NRLAST "${GALLERY_NR_COUNT} - 1")
|
||||
foreach(j RANGE 0 ${NRLAST})
|
||||
set(rec "${GALLERY_NR_${j}}")
|
||||
string(FIND "${rec}" "|" p)
|
||||
string(SUBSTRING "${rec}" 0 ${p} nrname)
|
||||
math(EXPR np "${p} + 1")
|
||||
string(SUBSTRING "${rec}" ${np} -1 nrreason)
|
||||
string(APPEND adoc "* *${nrname}* -- ${nrreason}\n")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
file(WRITE "${ADOC}" "${adoc}")
|
||||
|
||||
# ---- summary ----------------------------------------------------------------
|
||||
message(STATUS "")
|
||||
message(STATUS "Gallery snapshot: ${N_OK} rendered, ${N_FAIL} failed/skipped.")
|
||||
if(FAILED)
|
||||
string(REPLACE ";" ", " failstr "${FAILED}")
|
||||
message(STATUS "Failed/skipped: ${failstr}")
|
||||
endif()
|
||||
message(STATUS "Article written: ${ADOC}")
|
||||
@@ -1,26 +0,0 @@
|
||||
HEADER CAFFEINE (1,3,7-TRIMETHYLXANTHINE) FORMULA C8H10N4O2
|
||||
HETATM 1 N1 CAF A 1 -1.250 1.250 0.000 1.00 0.00 N
|
||||
HETATM 2 C2 CAF A 1 0.000 1.500 0.000 1.00 0.00 C
|
||||
HETATM 3 O2 CAF A 1 1.200 1.300 0.000 1.00 0.00 O
|
||||
HETATM 4 N3 CAF A 1 1.500 0.000 0.000 1.00 0.00 N
|
||||
HETATM 5 C4 CAF A 1 1.000 -1.000 0.000 1.00 0.00 C
|
||||
HETATM 6 C5 CAF A 1 0.000 -1.500 0.000 1.00 0.00 C
|
||||
HETATM 7 C6 CAF A 1 -1.000 -1.000 0.000 1.00 0.00 C
|
||||
HETATM 8 O6 CAF A 1 -1.800 -2.000 0.000 1.00 0.00 O
|
||||
HETATM 9 N7 CAF A 1 -1.500 0.000 0.000 1.00 0.00 N
|
||||
HETATM 10 C8 CAF A 1 -2.300 1.000 0.000 1.00 0.00 C
|
||||
HETATM 11 H8 CAF A 1 -3.000 1.200 0.000 1.00 0.00 H
|
||||
HETATM 12 N9 CAF A 1 -2.900 2.100 0.000 1.00 0.00 N
|
||||
HETATM 13 CM1 CAF A 1 -1.800 2.200 0.000 1.00 0.00 C
|
||||
HETATM 14 HM1A CAF A 1 -1.000 2.500 0.000 1.00 0.00 H
|
||||
HETATM 15 HM1B CAF A 1 -2.400 2.900 0.000 1.00 0.00 H
|
||||
HETATM 16 HM1C CAF A 1 -2.200 1.300 0.000 1.00 0.00 H
|
||||
HETATM 17 CM3 CAF A 1 2.200 0.500 0.000 1.00 0.00 C
|
||||
HETATM 18 HM3A CAF A 1 2.700 1.200 0.000 1.00 0.00 H
|
||||
HETATM 19 HM3B CAF A 1 2.800 -0.200 0.000 1.00 0.00 H
|
||||
HETATM 20 HM3C CAF A 1 1.900 0.800 0.000 1.00 0.00 H
|
||||
HETATM 21 CM7 CAF A 1 -2.300 -0.500 0.000 1.00 0.00 C
|
||||
HETATM 22 HM7A CAF A 1 -3.200 -0.700 0.000 1.00 0.00 H
|
||||
HETATM 23 HM7B CAF A 1 -1.800 -1.300 0.000 1.00 0.00 H
|
||||
HETATM 24 HM7C CAF A 1 -2.800 0.100 0.000 1.00 0.00 H
|
||||
END
|
||||
@@ -1,32 +0,0 @@
|
||||
0 0 Carbon 40 40 40
|
||||
0 1 Center 230 60 60
|
||||
1 0 -4.0 -4.0 -4.0 1.2 0
|
||||
1 1 4.0 -4.0 -4.0 1.2 0
|
||||
1 2 4.0 4.0 -4.0 1.2 0
|
||||
1 3 -4.0 4.0 -4.0 1.2 0
|
||||
1 4 -4.0 -4.0 4.0 1.2 0
|
||||
1 5 4.0 -4.0 4.0 1.2 0
|
||||
1 6 4.0 4.0 4.0 1.2 0
|
||||
1 7 -4.0 4.0 4.0 1.2 0
|
||||
1 8 0.0 0.0 0.0 1.8 1
|
||||
2 0 1
|
||||
2 1 2
|
||||
2 2 3
|
||||
2 3 0
|
||||
2 4 5
|
||||
2 5 6
|
||||
2 6 7
|
||||
2 7 4
|
||||
2 0 4
|
||||
2 1 5
|
||||
2 2 6
|
||||
2 3 7
|
||||
2 8 0
|
||||
2 8 1
|
||||
2 8 2
|
||||
2 8 3
|
||||
2 8 4
|
||||
2 8 5
|
||||
2 8 6
|
||||
2 8 7
|
||||
3
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB |
@@ -1,8 +0,0 @@
|
||||
mm
|
||||
50 5
|
||||
0 0 0
|
||||
300 0 0
|
||||
300 300 0
|
||||
300 300 300
|
||||
0 300 300
|
||||
0 300 600
|
||||
@@ -1,204 +0,0 @@
|
||||
wire.g
|
||||
101
|
||||
300.0000 0.0000 0.0000
|
||||
25.0000
|
||||
290.5749 74.6070 15.0000
|
||||
25.0000
|
||||
262.8920 144.5261 30.0000
|
||||
25.0000
|
||||
218.6906 205.3641 45.0000
|
||||
25.0000
|
||||
160.7480 253.2984 60.0000
|
||||
25.0000
|
||||
92.7051 285.3170 75.0000
|
||||
25.0000
|
||||
18.8372 299.4080 90.0000
|
||||
25.0000
|
||||
-56.2144 294.6862 105.0000
|
||||
25.0000
|
||||
-127.7338 271.4481 120.0000
|
||||
25.0000
|
||||
-191.2272 231.1540 135.0000
|
||||
25.0000
|
||||
-242.7051 176.3356 150.0000
|
||||
25.0000
|
||||
-278.9329 110.4374 165.0000
|
||||
25.0000
|
||||
-297.6344 37.6000 180.0000
|
||||
25.0000
|
||||
-297.6344 -37.6000 195.0000
|
||||
25.0000
|
||||
-278.9329 -110.4374 210.0000
|
||||
25.0000
|
||||
-242.7051 -176.3356 225.0000
|
||||
25.0000
|
||||
-191.2272 -231.1540 240.0000
|
||||
25.0000
|
||||
-127.7338 -271.4481 255.0000
|
||||
25.0000
|
||||
-56.2144 -294.6862 270.0000
|
||||
25.0000
|
||||
18.8372 -299.4080 285.0000
|
||||
25.0000
|
||||
92.7051 -285.3170 300.0000
|
||||
25.0000
|
||||
160.7480 -253.2984 315.0000
|
||||
25.0000
|
||||
218.6906 -205.3641 330.0000
|
||||
25.0000
|
||||
262.8920 -144.5261 345.0000
|
||||
25.0000
|
||||
290.5749 -74.6070 360.0000
|
||||
25.0000
|
||||
300.0000 -0.0000 375.0000
|
||||
25.0000
|
||||
290.5749 74.6070 390.0000
|
||||
25.0000
|
||||
262.8920 144.5261 405.0000
|
||||
25.0000
|
||||
218.6906 205.3641 420.0000
|
||||
25.0000
|
||||
160.7480 253.2984 435.0000
|
||||
25.0000
|
||||
92.7051 285.3170 450.0000
|
||||
25.0000
|
||||
18.8372 299.4080 465.0000
|
||||
25.0000
|
||||
-56.2144 294.6862 480.0000
|
||||
25.0000
|
||||
-127.7338 271.4481 495.0000
|
||||
25.0000
|
||||
-191.2272 231.1540 510.0000
|
||||
25.0000
|
||||
-242.7051 176.3356 525.0000
|
||||
25.0000
|
||||
-278.9329 110.4374 540.0000
|
||||
25.0000
|
||||
-297.6344 37.6000 555.0000
|
||||
25.0000
|
||||
-297.6344 -37.6000 570.0000
|
||||
25.0000
|
||||
-278.9329 -110.4374 585.0000
|
||||
25.0000
|
||||
-242.7051 -176.3356 600.0000
|
||||
25.0000
|
||||
-191.2272 -231.1540 615.0000
|
||||
25.0000
|
||||
-127.7338 -271.4481 630.0000
|
||||
25.0000
|
||||
-56.2144 -294.6862 645.0000
|
||||
25.0000
|
||||
18.8372 -299.4080 660.0000
|
||||
25.0000
|
||||
92.7051 -285.3170 675.0000
|
||||
25.0000
|
||||
160.7480 -253.2984 690.0000
|
||||
25.0000
|
||||
218.6906 -205.3641 705.0000
|
||||
25.0000
|
||||
262.8920 -144.5261 720.0000
|
||||
25.0000
|
||||
290.5749 -74.6070 735.0000
|
||||
25.0000
|
||||
300.0000 -0.0000 750.0000
|
||||
25.0000
|
||||
290.5749 74.6070 765.0000
|
||||
25.0000
|
||||
262.8920 144.5261 780.0000
|
||||
25.0000
|
||||
218.6906 205.3641 795.0000
|
||||
25.0000
|
||||
160.7480 253.2984 810.0000
|
||||
25.0000
|
||||
92.7051 285.3170 825.0000
|
||||
25.0000
|
||||
18.8372 299.4080 840.0000
|
||||
25.0000
|
||||
-56.2144 294.6862 855.0000
|
||||
25.0000
|
||||
-127.7338 271.4481 870.0000
|
||||
25.0000
|
||||
-191.2272 231.1540 885.0000
|
||||
25.0000
|
||||
-242.7051 176.3356 900.0000
|
||||
25.0000
|
||||
-278.9329 110.4374 915.0000
|
||||
25.0000
|
||||
-297.6344 37.6000 930.0000
|
||||
25.0000
|
||||
-297.6344 -37.6000 945.0000
|
||||
25.0000
|
||||
-278.9329 -110.4374 960.0000
|
||||
25.0000
|
||||
-242.7051 -176.3356 975.0000
|
||||
25.0000
|
||||
-191.2272 -231.1540 990.0000
|
||||
25.0000
|
||||
-127.7338 -271.4481 1005.0000
|
||||
25.0000
|
||||
-56.2144 -294.6862 1020.0000
|
||||
25.0000
|
||||
18.8372 -299.4080 1035.0000
|
||||
25.0000
|
||||
92.7051 -285.3170 1050.0000
|
||||
25.0000
|
||||
160.7480 -253.2984 1065.0000
|
||||
25.0000
|
||||
218.6906 -205.3641 1080.0000
|
||||
25.0000
|
||||
262.8920 -144.5261 1095.0000
|
||||
25.0000
|
||||
290.5749 -74.6070 1110.0000
|
||||
25.0000
|
||||
300.0000 -0.0000 1125.0000
|
||||
25.0000
|
||||
290.5749 74.6070 1140.0000
|
||||
25.0000
|
||||
262.8920 144.5261 1155.0000
|
||||
25.0000
|
||||
218.6906 205.3641 1170.0000
|
||||
25.0000
|
||||
160.7480 253.2984 1185.0000
|
||||
25.0000
|
||||
92.7051 285.3170 1200.0000
|
||||
25.0000
|
||||
18.8372 299.4080 1215.0000
|
||||
25.0000
|
||||
-56.2144 294.6862 1230.0000
|
||||
25.0000
|
||||
-127.7338 271.4481 1245.0000
|
||||
25.0000
|
||||
-191.2272 231.1540 1260.0000
|
||||
25.0000
|
||||
-242.7051 176.3356 1275.0000
|
||||
25.0000
|
||||
-278.9329 110.4374 1290.0000
|
||||
25.0000
|
||||
-297.6344 37.6000 1305.0000
|
||||
25.0000
|
||||
-297.6344 -37.6000 1320.0000
|
||||
25.0000
|
||||
-278.9329 -110.4374 1335.0000
|
||||
25.0000
|
||||
-242.7051 -176.3356 1350.0000
|
||||
25.0000
|
||||
-191.2272 -231.1540 1365.0000
|
||||
25.0000
|
||||
-127.7338 -271.4481 1380.0000
|
||||
25.0000
|
||||
-56.2144 -294.6862 1395.0000
|
||||
25.0000
|
||||
18.8372 -299.4080 1410.0000
|
||||
25.0000
|
||||
92.7051 -285.3170 1425.0000
|
||||
25.0000
|
||||
160.7480 -253.2984 1440.0000
|
||||
25.0000
|
||||
218.6906 -205.3641 1455.0000
|
||||
25.0000
|
||||
262.8920 -144.5261 1470.0000
|
||||
25.0000
|
||||
290.5749 -74.6070 1485.0000
|
||||
25.0000
|
||||
300.0000 -0.0000 1500.0000
|
||||
25.0000
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user